#laravel #laravel-storage
#laravel #laravel-хранилище
Вопрос:
Как я могу отобразить изображения из папки хранилища (вне общедоступной)? Я сохранил свои файлы изображений в хранилище / имени пользователя, но я не могу отобразить их в представлении. Как я могу переместить загрузку в «хранилище / изображения /» (под именем папки «изображения»)?
Вид
<form class="forms-sample" method="post" action="/updateprofil" enctype="multipart/form-data">
@method('put')
@csrf
<div align="center">
<img alt="User Pic" src="{{ storage_path($membre->photo) }}" id="profile-image1"
class="img-circle img-responsive">
<input id="pic" class="hidden" name="pic" type="file" accept="image/*">
<div style="color:#999;">click here to change profile image</div>
</div>
<input type="hidden" id="idMembre" name="membre_id" value="{{ $membre->id }}">
</form>
Контроллер
public function updateprofil(Request $request)
{
$request->validate(['cin' => 'size:8']);
if ($request->hasFile('pic')) {
$image = $request->file('pic');
$filename = time() . '.' . $image->getClientOriginalExtension();
Image::make($image)->resize(300, 300)->save(storage_path("app/usernamee/" . $filename));
$request->pic = $filename;
}
$membre = Membre::findOrFail($request->membre_id);
$membre->photo = 'app/usernamee/' . $request->pic;
$membre->update($request->all());
return redirect('profil');
}
Это мое представление профиля пользователя
PS: Метод обновления работает для обновления информации, но не работает для фотографии.
Ответ №1:
Вы либо должны:
1) необходимо сохранить изображение в storage/app/public
каталоге — Сначала вам нужно символически связать путь к хранилищу с общедоступным:
хранилище php artisan: ссылка
Тогда ваш способ должен сработать.
2) Создайте маршрут для возврата изображения.
Route::get('show-image/{id}', function() {
$membre = Membre::findOrFail($id);
$file = storage_path($membre->photo);
return response()->file($file);
})
Комментарии:
1. я работаю с локальным хранилищем, зачем мне это делать в общедоступном каталоге?
2. Используйте # 1, если вы хотите показать изображение публично, в противном случае используйте # 2
3. Я сделал это с помощью # 2, это работает, но когда я редактирую поле, например «имя», фотография исчезает, и она возвращается пустой. Как я могу это исправить, пожалуйста? (Прошу прощения за опоздание)
4. Вы имеете в виду изменение имени файла?
5. Да, и именно тогда, когда я изменяю какие-либо файлы, такие как «имя», «фамилия», «электронная почта».. Я имею в виду, что когда я меняю один из файлов, изображение исчезает