Laravel图片上传成功存目录但数据库存储临时路径问题求助
问题原因
- 变量名拼写错误:执行验证后得到的数组变量是
$validateData,但在处理上传文件的分支里,你把处理后的路径赋值给了拼写多了一个字母d的$validatedData,导致最终传入模型创建方法的数组里,thumbnail字段还是原来的临时文件路径值。 move()方法返回的是File对象,直接赋值存入数据库会被转为服务器本地绝对路径,通常业务场景存相对路径更适配后续的前端资源调用。
修正后的控制器代码
public function store(Request $request) { $validateData = $request->validate([ 'title' => 'required|max:255', 'thumbnail' => 'image|file|max:8192', 'slug' => 'required', 'description' => 'required', ]); if ($request->file('thumbnail')) { $imageName = time().'.'.$request->file('thumbnail')->getClientOriginalExtension(); // 修正变量名拼写,同时直接存相对路径即可 $validateData['thumbnail'] = 'uploads/article/'.$imageName; // 执行移动文件操作 $request->thumbnail->move(public_path('uploads/article/'), $imageName); } Article::create($validateData); return redirect('/admin-article')->with('success', 'Data has been successfully added'); }
内容的提问来源于stack exchange,提问作者Alfandy Afriandani
相关产品推荐
相关产品推荐

