Лучший способ добиться этого - добавить новый диск images
.Таким образом, новый шаблон URL можно применять выборочно, и он не будет мешать существующему коду.
Шаг 1
Добавьте диск в config / filesystems.php :
'images' => [
'driver' => 'local',
'root' => storage_path('app/public/images'),
'url' => env('APP_URL') . '/images',
'visibility' => 'public',
],
Вот как вы сохраняете загруженные файлы на свой новый диск:
$request->file('image')->storeAs(/* path */ '/', /* filename */ 'x.jpg', /* disk */ 'images')
И так вы создаете ссылки наизображение, которое выглядит как http://example.com/images/x.jpg
:
Storage::disk('images')->url('x.jpg')
Шаг 2
Теперь, когда вы можете создавать ссылки на эти изображения, вы должны убедиться, что ваш сервер может их найти.У вас есть несколько вариантов для этого.
Опция 1
Создайте символическую ссылку в вашем общедоступном каталоге, как работает диск по умолчанию public
Laravel (/storage
).
$ ln -s /var/www/example.com/storage/app/public/images /var/www/example.com/public/images
Опция 2
Создайте маршрут в приложении Laravel для обслуживания изображений.
Route::get('images/{file}', function ($file) {
return Storage::disk('images')->response($file);
// return Storage::disk('images')->download($file);
});
Опция 3
Создайте правило перезаписи на своем веб-сервере.
В nginx это может выглядеть так:
location /images/ {
root /var/www/example.com/storage/app/public/;
}
В Apache вы можете использовать псевдоним :
Alias "/images" "/var/www/example.com/storage/app/public/images"