You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 07:55:41