Laravel 9图片上传时数据库存储临时文件路径异常求助
Laravel 9图片上传数据库存储临时路径问题修复
问题现象
执行图片上传操作时,数据库中存储的是PHP临时文件路径(如C:\XAMPP\tmp\php6CB6.tmp),而非预期的图片存储路径。
错误代码分析
原代码存在三处关键错误:
- 验证规则语法错误:
image字段的验证规则被错误拆分,导致部分规则未生效 - 存储路径拼接错误:
$save_url缺少目录分隔符,生成的路径格式不符合预期 - 模型字段赋值错误:误将文件对象变量
$image作为模型字段名,导致存入临时文件路径
修复后的完整代码
$request->validate([ 'title' => 'required|unique:latests|max:255', 'description' => 'required', 'image' => 'required|mimes:jpg,png,jpeg|max:5048' // 修复验证规则格式 ]); $save_url = ''; if($request->file('image')){ $image = $request->file('image'); $image_gen = hexdec(uniqid()). '.'. $image->getClientOriginalExtension(); // 保存图片到指定路径 Image::make($image)->resize(322, 500)->save(public_path('upload/image-folder/'. $image_gen)); // 修复路径分隔符,确保URL格式正确 $save_url = 'upload/image-folder/'. $image_gen; } $latest = new Latest(); $latest->title = $request->title; $latest->description = $request->description; // 修复字段赋值:使用模型实际字段名`image`而非变量`$image` $latest->image = $save_url; $latest->save();
关键修复点说明
- 验证规则修复:将
image字段的验证规则合并为一条,确保mimes和max规则生效 - 路径拼接修复:在
$save_url中添加目录分隔符/,生成正确的相对路径 - 模型赋值修复:将
$latest->$image改为$latest->image,明确指定模型的image字段,避免将文件对象的临时路径存入数据库
内容的提问来源于stack exchange,提问作者Criswell21
相关产品推荐
相关产品推荐

