检索保存在数据库中的图像
Retrieve imaged saved in DB
我遇到以下问题:
图像的路径正在存储到数据库中,但存储文件夹中的实际文件是一个完全不同的名称,我找不到检索显示在视图中的方法:
public 函数 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
但是在我的存储文件夹中我得到 d7f7r87RmMy4NtCFvbJ8sQeutfC5wtsiak7GZXcn.png
我一直在尝试不同的方式来显示图像,但它不起作用。我错过了什么?
路径中不需要加$image_name吗
即
$image_path = $image_path . '/'. $image_name;
在你做之前
Storage::put($image_path,$image);
您正在使用文件的原始名称将文件存储在数据库中,但使用存储方法返回给您的名称保存在存储目录中。所以你可以做
$user->image = $image_path;
而不是
$user->image = Storage::url($image_name);
或者如果您想将文件的原始名称保存到数据库和存储中,您可以这样做
Storage::put($image_name, $image);
$user->image = Storage::url($image_name);
使用 store() 方法 Laravel 为文件生成一个随机名称。您应该使用 storeAs() 方法,该方法允许您提供要用来保存文件的名称。
$image_name = $request->file('image')->getClientOriginalName();
$image_path = $request->file('image')->storeAs('path/to/storage', $image_name);
我遇到以下问题: 图像的路径正在存储到数据库中,但存储文件夹中的实际文件是一个完全不同的名称,我找不到检索显示在视图中的方法:
public 函数 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
但是在我的存储文件夹中我得到 d7f7r87RmMy4NtCFvbJ8sQeutfC5wtsiak7GZXcn.png
我一直在尝试不同的方式来显示图像,但它不起作用。我错过了什么?
路径中不需要加$image_name吗
即
$image_path = $image_path . '/'. $image_name;
在你做之前
Storage::put($image_path,$image);
您正在使用文件的原始名称将文件存储在数据库中,但使用存储方法返回给您的名称保存在存储目录中。所以你可以做
$user->image = $image_path;
而不是
$user->image = Storage::url($image_name);
或者如果您想将文件的原始名称保存到数据库和存储中,您可以这样做
Storage::put($image_name, $image);
$user->image = Storage::url($image_name);
使用 store() 方法 Laravel 为文件生成一个随机名称。您应该使用 storeAs() 方法,该方法允许您提供要用来保存文件的名称。
$image_name = $request->file('image')->getClientOriginalName();
$image_path = $request->file('image')->storeAs('path/to/storage', $image_name);