Laravel 9表单上传图片未存入数据库,无法前端展示求助
问题分析与解决方案
核心问题
表单提交后文本数据成功存入数据库,但图片文件名未写入数据库,同时前端读取图片时字段名称错误,导致无法展示图片。
错误点1:控制器未将图片文件名存入数据库
在yenihaberekle方法中,生成了图片文件名$file_name,但未将其赋值给模型的resim字段,导致数据库该字段为空。同时move方法的参数传递有误。
修正后的控制器代码:
public function yenihaberekle(Request $request){ $request->validate([ 'kategori'=>'required', 'baslik'=>'required|min:6|max:50', 'icerik'=>'required|min:50', 'resim' => 'required|image|mimes:jpeg,png,jpg,gif,svg|max:2048', ]); $file_name = time() . '.' . $request->resim->getClientOriginalExtension(); // 修正move方法参数:目标目录与文件名分开传递 $request->resim->move(public_path('images'), $file_name); $stu = new haberler(); $stu->baslik = $request->baslik; $stu->kategori = $request->kategori; $stu->icerik = $request->icerik; // 新增:将图片文件名存入数据库resim字段 $stu->resim = $file_name; $stu->save(); return redirect()->back()->with('success','Haber veya Kampanya Başarıyla Eklenmitir. / News or Campaing has added by succesfuly'); }
错误点2:前端展示时使用错误字段名
前端代码使用$haberler->resimler读取文件名,但数据库字段名为resim,导致无法获取正确路径。
修正后的前端图片代码:
<img src="{{ asset('images/'. $haberler->resim) }}" alt="">
额外检查项
- 确保
public/images目录存在且具备写入权限,否则图片无法上传至服务器。 - 表单已正确设置
enctype="multipart/form-data",你的代码中已包含该设置,无需修改。
内容的提问来源于stack exchange,提问作者Yasin Yıldız
相关产品推荐
相关产品推荐

