доступ к загруженному файлу на веб-интерфейсе с помощью laravel - PullRequest
0 голосов
/ 12 марта 2019

загружаю и сохраняю картинку.В мой blade.php У меня есть эта строка:

<img src="{{ storage_path('app\\'. $image) }}" />

эта строка генерирует эту строку:

<img src="C:\laragon\www\ProjectName\storage\app\uploads/images/IQeJo4w9lKqSxufTySpYKv1m9Z0TOV3PIYIvlN3g.jpeg" />

Изображение не появляется, но если я copy / past ссылка C:\ в поле моего браузера, у меня есть изображение.

Есть ли у вас идеи показать изображение с тегом img?

Ответы [ 4 ]

1 голос
/ 12 марта 2019

Если вы создали символическую ссылку, вы можете получить доступ к файлу с помощью

$path = asset('storage/' . $image);

попробуй и дай мне знать.

1 голос
/ 12 марта 2019

Вы сохранили свое изображение внутри /storage/app/uploads, что является , а не публичным каталогом. Общий каталог /storage/app/public.

Чтобы вместо этого сохранить изображение на публичном диске, попробуйте это в контроллере загрузки файлов:

$path = $request->file('image')->storePublicly('uploads/images');

(Сохранить $path в базе данных)

Тогда внутри вашего клинка:

<img src="{{ Storage::disk('public')->url($path) }}">

Чтобы это работало, вам также нужно связать диск с общим хранилищем, если вы этого еще не сделали:

php artisan storage:link

storage_path() дает вам внутренний путь к файлу, который не будет работать для создания ссылок на изображение, которое может обслуживаться веб-сервером.

1 голос
/ 12 марта 2019

storage_path даст вам абсолютный путь к файлу в вашей локальной файловой системе. Вы никогда не должны использовать это как общедоступный URL. Это тоже не сработает. Причина, по которой вы можете увидеть это изображение, заключается в том, что веб-сервер, вероятно, работает в вашей собственной системе.

Файлы в папке storage находятся за пределами размещенной части веб-сайта и поэтому не доступны напрямую.

Вам следует взглянуть на публичный диск , если вы хотите, чтобы ваши файлы были доступны напрямую.

0 голосов
/ 13 марта 2019

@ Тревис: у меня есть это:

'url' => env('APP_URL', 'http://localhost'),

'asset_url' => env('ASSET_URL', null),
...