Получить изображение сохранено в БД

У меня есть следующая проблема:
Путь к изображению сохраняется в БД, но фактический файл в папке «Хранилище» имеет полное другое имя, и я не могу найти способ извлечь его для отображения в виде:

публичная функция savePicture (Запрос $ request) {

if($request->hasFile('image')) {
$image_name = $request->file('image')->getClientOriginalName();
$image_path = $request->file('image')->store('public');
$image = Image::make(Storage::get($image_path))->resize(320,240)->encode();
Storage::put($image_path,$image);
$image_path = explode('/',$image_path);
$user_id = $request->input('user_id');
$user = User::find(Auth::user()->id);
$user->image = Storage::url($image_name);
$user->save();
return back();
} else{
return "No file selected";
}

Это запрос для получения пути, но он не может заставить его работать, потому что его объект и $ pic-> image не работают в поле зрения.

$imagen = DB::table('users')
->select('image')
->where('id', '=', Auth::user()->id);

return view('/tablero', [
'posts' => $posts,
'pic' => $image,
]);

Моя база данных выглядит как

изображение: /storage/name.png

Но в моей папке Storage я получаю d7f7r87RmMy4NtCFvbJ8sQeutfC5wtsiak7GZXcn.png

Я пробовал разные способы отображения изображения, но оно не работает. Что мне не хватает?

0

Решение

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

$user->image = $image_path;

вместо

$user->image = Storage::url($image_name);

ИЛИ, если вы хотите сохранить оригинальное имя файла в БД и в хранилище, вы можете сделать

Storage::put($image_name, $image);
$user->image = Storage::url($image_name);
0

Другие решения

Вам не нужно добавлять $ image_name к пути.

то есть

$image_path = $image_path . '/'. $image_name;

Прежде чем сделать

Storage::put($image_path,$image);
0

Используя метод store (), Laravel генерирует случайное имя для файла. Вам следует использовать метод storeAs (), который позволяет указать имя, под которым вы хотите сохранить файл.

$image_name = $request->file('image')->getClientOriginalName();
$image_path = $request->file('image')->storeAs('path/to/storage', $image_name);
0
По вопросам рекламы ammmcru@yandex.ru
Adblock
detector