我有以下问题: 图像的路径存储到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
我一直在尝试不同的方式来显示图像,但它不起作用。我错过了什么?
答案 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);