Laravel图片上传后数据库存tmp路径问题求助
解决Laravel图片上传后数据库存储临时路径的问题
问题出在你没有把生成的自定义文件名替换到要存入数据库的数组里:
- 验证后的
$validatedData里,image字段还是上传文件的临时路径信息 - 你只完成了文件移动操作,但没更新这个数组,所以
Banner::create()会把临时路径写入数据库
修改方案如下:
调整控制器代码
在移动文件后,将生成的$imageName赋值给$validatedData['image'],同时增加文件存在判断避免报错:
public function store(Request $request) { $validatedData = $request->validate([ 'banner_title' => 'required|max:255', 'image' => 'image|file|max:5120', ]); if ($request->hasFile('image')) { $imageName = time() . '.' . $request->image->extension(); $request->image->move(public_path('images/banner-image'), $imageName); // 将自定义文件名替换到验证数组中 $validatedData['image'] = $imageName; } Banner::create($validatedData); return redirect('/dashboard/banner')->with('msg', 'Success!'); }
检查模型的可填充字段
确保Banner模型的$fillable属性包含image字段,否则批量赋值不会写入该字段:
namespace App\Models; use Illuminate\Database\Eloquent\Model; class Banner extends Model { protected $fillable = ['banner_title', 'image']; }
内容的提问来源于stack exchange,提问作者Ana
相关产品推荐
相关产品推荐

