AimLaravel Filesystem/хранения - Местные/Public URL-файлов не работает
Привет, Я использую Laravel для RESTful API. Я хотел бы вернуть пользователям URL-адрес файла изображения. В настоящее время я использую локальное хранилище, но я настроил экземпляр Amazon S3 и синхронизировал с ним свои изображения. Моя цель состоит в том, чтобы легко переключаться между локальным хранением и s3, просто изменив первую строку в моей конфигурации/filesystems.php:
'default' => 'public',
Подробности
Я настроил Laravel для доступа как локальный диск и S3 через файл config/filesystems.php. В соответствии с инструкциями laravel у меня есть softlinked public/storage to storage/app/public. Вот диски массива из моей конфигурации/filesystems.php:
'disks' => [
// 'local' => [
// 'driver' => 'local',
// 'root' => storage_path('app'),
// ],
'public' => [
'driver' => 'local',
'root' => storage_path('app/public'),
'visibility' => 'public',
],
's3' => [
'driver' => 's3',
'key' => '...',
'secret' => '...',
'region' => '...',
'bucket' => 'mybucket',
],
],
Это моя иерархия папок:
на локальном диске:
- myLaravelApp/хранение/мобильный/фоны/
- myLaravelApp/storage/mobile/closetimages/
- myLaravelApp/storage/mobile/profileimages/
На S3
- mybucket/мобильный/фоны/
- mybucket/мобильный/closetimages/
- mybucket/мобильный/profileimages/
Как я уже говорил ранее, я бы как легко переключаться между локальным хранилищем и s3, просто изменив первую строку в моей config/filesystems.php:
'default' => 'public',
, и я надеялся использовать следующий вызов функции для возврата данных пользователя:
return Storage::url('mobile/profileimages/12345.jpg');
Когда я делаю этот вызов с s3 как по умолчанию, ответ таков:
https://s3.amazonaws.com/mybucket/mobile/profileimages/12345.jpg
Что отличное! Однако, когда я делаю этот звонок с локальным хранилищем по умолчанию, ответ:
/storage/mobile/profileimages/12345.JPG
Который даже не полный URL :(Что я хотел бы вернуться что-то вроде:
http://mywebapp/storage/mobile/profileimages/12345.jpg
Но я хотел бы тот же вызов работать как для s3 и локального хранения так что я могу переключаться.
могу ли я использовать его неправильно? это раздражает, потому что это, очевидно, библиотека/рамки вызова, так что я ожидал бы работать, или, по крайней мере, вернуть полный URL.
Спасибо
Это выглядит великолепно. У вас есть какая-либо рекомендация относительно того, где поставить эту функцию в рамках моего проекта laravel, чтобы сделать ее широко доступной, поскольку она, по-видимому, является более или менее глобальной функцией. Спасибо – mils
Я рад, что это помогло. Я бы просто поместил его в файл app/helpers.php. Если вы согласны с этим подходом, не забудьте автозагрузить его, добавив '' файлы: ["app/helpers.php"] 'в раздел' autoload' вашего 'composer.json'. – peterm