Я пытаюсь получить доступ к изображениям для моего проекта.
Я запустил ссылку на хранилище php artisan
Laravel создает общедоступное/хранилище
когда я загружаю изображение в хранилище/приложение, я вижу изображение в хранилище/приложении, но не в общедоступном/хранилище.
Когда я пытаюсь просмотреть изображение в браузере, я получаю ошибку 404
контроллер.php
Property::create([
'SittingRoom'=> request()->file('sittingroom')->store('apartments')
]);
лезвие.php
<img src = "{{asset('storage/'.$duplex->SittingRoom)}}">
ссылка в браузере
http://127.0.0.1:8000/storage/apartments/HNLDysVUdRG7ZTBkF2qFGk2B2tAKYzYcVImNEWLx.jpg
после запуска ремесленной ссылки на хранилище
C:\xampp\htdocs\OPAAM> хранилище php artisan: ссылка
ИНФОРМАЦИЯ Ссылка [C:\xampp\htdocs\OPAAM/public\storage] подключена к [C:\xampp\htdocs\OPAAM\storage\app/public].






public/storage?public! Удалите его, если есть такой каталог/файл, и снова запустите команду..env нужно FILESYSTEM_DISK=public (по умолчанию).htaccess, который блокирует доступ к любому файлу. Вы можете проверить наличие этого файла в каталогах public и storage/app/public.Кстати, вспомогательная функция asset() используется корректно, и полученная ссылка тоже выглядит корректно.
Я не знаю, каково значение фрагмента кода, отображаемого в «controller.php», для отображения существующего файла. Как я предполагаю, вы убедились, что файл существует.
Получить список скрытых файлов/папок.
Линукс:
ls -la "<path of project>/public"
Окна:
dir -h "<path of project>/public"
public/storageКаталог public/storage физически не существует в Laravel. Все файлы для сохранения должны быть помещены в каталог storage/app/public. Это будет физический каталог, который вы можете сделать доступным с помощью символической ссылки.
Виртуальная ссылка, которая связывает несуществующий путь с существующим. В нашем примере мы можем связать несуществующий путь public/storage с физически существующим storage/app/public каталогом.
Как? У нас есть два варианта для этого. Либо используйте команду php artisan storage:link в Laravel, специально предназначенную для этой цели, либо настройте ее вручную в операционной системе.
Очевидно, первое решение является более очевидным.
В каталоге storage мы можем хранить другие конфиденциальные файлы, такие как файлы журналов, файлы кеша и т. д. Кроме того, мы также можем хранить общедоступные файлы, которые при желании можно сделать общедоступными с помощью символической ссылки.
Каталог public — это каталог в фреймворке Laravel, к которому на самом деле обращается пользователь. Он не может получить доступ ни к каким другим файлам, кроме файлов с соответствующей конфигурацией документации. Таким образом, вы можете контролировать то, чем хотите поделиться.
Если вы создадите символическую ссылку, она будет работать должным образом. Например, вы можете получить доступ к файлу storage/app/public/images/test.png через виртуальный путь: public/storage/images/test.png.
Документация: https://laravel.com/docs/10.x/filesystem#the-public-disk
Проблема заключалась в том, что в config/filesystems.php
'default' => env('FILESYSTEM_DISK', 'public'),
но в файле .env
FILESYSTEM_DISK=local
Эта конфигурация сохраняет ваши изображения в Storage/app вместо storage/app/public.
Изображения, сохраненные в storage/app, недоступны для общего доступа.
Итак, вам нужно изменить файл .env