Ссылка Publi c для изображения в подпапке хранилища в Laravel - PullRequest
0 голосов
/ 04 марта 2020

Когда я сохраняю изображение, я пытаюсь сохранить в подпапке, например:

/2020/3/myimagename.jpg

Я могу сохранить файл следующим образом:

$yearMonthPath = DIRECTORY_SEPARATOR.$currentYear.DIRECTORY_SEPARATOR.$currentMonth;
$fileName = $userId."_".uniqid()."_".$fileName;
Storage::disk('local')->put($yearMonthPath.DIRECTORY_SEPARATOR.$fileName, file_get_contents($file));

Файлы изображений теперь находятся в:

/storage/app/2020/3/1_5e5fe9b93f37a_71a5d6e5c38bd2993c19a64229b383b1.jpg

Я связал хранилище с publi c:

php artisan storage:link

Из-за документации я ожидал получить ссылку publi c для изображения:

echo asset('storage/app/2020/3/'.$fileName);

При этом выводится следующая ссылка, которая возвращает 404.

http://localhost:8000/storage/app/2020/3/1_5e5fe9b93f37a_71a5d6e5c38bd2993c19a64229b383b1.jpg

Я также пробовал разные комбинации "public / 2020 ...", "public / storage / 2020 ...", но ни один из них не работал.

Чего мне не хватает?

1 Ответ

1 голос
/ 04 марта 2020

Вам нужен public диск. Диск public предназначен для файлов, которые будут общедоступными. По умолчанию диск publi c использует драйвер local и сохраняет эти файлы в storage/app/public.

Storage::disk('public')

После сохранения файла и создания ссылки Symboli c, Вы можете создать URL для файлов с помощью помощника ресурса:

echo asset('storage/2020/3/'.$fileName); // remove `app`
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...