Laravel получает общедоступный URL-адрес для файла, хранящегося в общей папке хранилища

В Windows у меня есть Xampp. Мое приложение находится в Anuglar и Laravel 8. Я добавляю файлы в папку public в папке хранилища. Конфигурация в filesystem.php:

'public' => [
            'driver' => 'local',
            'root' => storage_path('app/public'),
            'url' => env('APP_URL').'/storage',
            'visibility' => 'public',
        ],

В файле .env:

APP_URL=http://localhost:8082/prftbx-crm-api/public

Файл в общей папке:

 Directory of C:\xampp\htdocs\crm-api\storage\app\public

06/25/2021  11:01 AM    <DIR>          .
06/25/2021  11:01 AM    <DIR>          ..
04/26/2021  10:57 PM                14 .gitignore
06/25/2021  11:01 AM               510 381787c3ad1442cc882ee427e93af805.txt

В Laravel я возвращаю URL, используя метод:

$fileDTO->filePath = Storage::url($fileEntity->file_name);

И в виду у меня есть адрес:

/storage/381787c3ad1442cc882ee427e93af805.txt

Когда я набираю URL в браузере:

http://localhost:8082/crm-api/public/storage/381787c3ad1442cc882ee427e93af805.txt

Я получаю 404, файл не найден


person Jonson    schedule 25.06.2021    source источник


Ответы (1)


Первый запуск следующей команды

php artisan storage:link

тогда ты можешь

http://localhost:8082/storage/381787c3ad1442cc882ee427e93af805.txt

сохранить URL-адрес приложения как

APP_URL=http://localhost:8082

Как говорится в документе

Общий диск, включенный в файл конфигурации файловой системы вашего приложения, предназначен для файлов, которые будут общедоступными. По умолчанию публичный диск использует локальный драйвер и хранит свои файлы в storage/app/public.

Чтобы сделать эти файлы доступными из Интернета, вы должны создать символическую ссылку из public/storage в storage/app/public. Используя это соглашение о папках, ваши общедоступные файлы будут храниться в одном каталоге, который можно легко использовать в разных развертываниях при использовании систем развертывания с нулевым временем простоя, таких как Envoyer.

Чтобы создать символическую ссылку, вы можете использовать Artisan-команду storage:link:

php artisan storage:link После того, как файл был сохранен и создана символическая ссылка, вы можете создать URL-адрес для файлов с помощью помощника ресурсов:

Ссылка: https://laravel.com/docs/8.x/filesystem#the-public-disk

person John Lobo    schedule 25.06.2021