Подскажите пожалуйста как правильно использовать файловую систему laravel.
На примере изображений, мне их нужно сохранять в /storage/images/.../image.jpg
На фронте нужно получить адрес к картинке - http://localhost/images/avatars/image.jpg
Но по файкту я могу получить только такой вариант http://localhost/storage/images/avatars/image.jpg
Вот мои конфиги по дискам:
'disks' => [
'local' => [
'driver' => 'local',
'root' => storage_path('app'),
],
'public' => [
'driver' => 'local',
'root' => storage_path('app/public'),
'url' => env('APP_URL') . '/storage',
'visibility' => 'public',
],
'images' => [
'driver' => 'local',
'root' => storage_path('app/public/images'),
'url' => env('APP_URL') . '/images',
'visibility' => 'public'
],
]
Если попытаться получить через asset то получаю 404
{{ asset('images/avatars/image.jpg') }}
Если через класс Storage::url() то получается, но урл не правильный.
Что мне нужно сделать чтобы получить нужный урл и при этом хранить файлы не в папке public/images
, а в storage/app/public/images
?
И второй вопрос, как закрыть прямой доступ через GET запрос к каталогу storage?
При запросе адреса http://localhost/storage
или http://localhost/storage/app
и др., получить 404 ошибку со стандартным шаблоном ?
Делаете симлинк(ярлык) storage/app/public -> public/storage/
php artisan storage:link
Простешая запись ваших файлов через POST (image - это имя input поля для файла) -
$my_image = $request->file('image')->store('images','public');
либо с оригинальным именем $image_name( сами задаете вместе с раширением )
$my_image = $request->file('image')->storeAs('images',$image_name,'public');
store('images','public') - тут первое это папка куда положится файл, а второе драйвер, которые используется для сохранинея этого файла(по дефолту он сохранит в storage/app/public). Т.е. файл будет лежать в storage/app/public/images/. Название файла будет сгенерировано автоматически.
Достать изображение из хранилища(например, в blade - шаблоне )
{{ asset('storage/'.$my_image) }}
ПС. Ваш собственный драйвер не верен
'images' => [
'driver' => 'local',
'root' => storage_path('app/public/images'),
'url' => env('APP_URL') . '/images',
'visibility' => 'public'
],
Путь куда все это будет сохраняться "имя_вашего_проекта_"/images/app/public/images .
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Консоль выдает Uncaught SyntaxError: Unexpected token '{' на счет 14 строкиПочему?
Есть хостинг regru, есть сайт(пока не залит), суть в том, что есть