检索保存在DB中的图像

时间:2017-12-15 13:51:43

标签: php database image laravel display

我有以下问题: 图像的路径存储到DB,但存储文件夹中的实际文件作为一个完全不同的名称,我找不到一种方法来检索在视图中显示:

public function savePicture(Request $ 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->图像无法在视图中工作

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

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

我的数据库就像

一样松散

image:/storage/name.png

但是在我的Storage文件夹中,我得到了d7f7r87RmMy4NtCFvbJ8sQeutfC5wtsiak7GZXcn.png

我一直在尝试不同的方式来显示图像,但它不起作用。我错过了什么?

3 个答案:

答案 0 :(得分:0)

您是否需要将$ image_name添加到路径中。

即。

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

在你做之前

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

答案 1 :(得分:0)

您正在使用文件的原始名称将文件存储在数据库中,但是以store方法返回给您的名称保存在存储目录中。所以你可以做到

$user->image = $image_path;

而不是

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

或者,如果您想将文件的原始名称保存到数据库和存储中,您可以这样做

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

答案 2 :(得分:0)

使用store()方法Laravel为文件生成随机名称。您应该使用storeAs()方法,该方法允许您提供要保存文件的名称。

$image_name = $request->file('image')->getClientOriginalName();
$image_path = $request->file('image')->storeAs('path/to/storage', $image_name);