Laravel 8如何设置图片上传为可选 解决空值调用getClientOriginalName()报错
Laravel 8 可选图片上传报错修复方案
核心逻辑
仅在用户确实上传了图片时执行上传相关代码,无上传操作时跳过图片处理步骤。
前置配置
先确认数据库posts表的image_name字段已设置为可空(nullable),否则保存无图片的记录时会触发数据库字段非空约束报错。
调整后代码
$post = new Post; // 先赋值必选字段title $post->title = $req->input('title'); // 判断请求中是否存在上传的图片文件 if ($req->hasFile('image_name')) { $upload_image_name = time().'_'.$req->image_name->getClientOriginalName(); $req->image_name->move('uploads', $upload_image_name); // 仅当有上传图片时给image_name字段赋值 $post->image_name = $upload_image_name; } $post->save();
可选优化
如果需要进一步提升稳定性,可以增加上传文件有效性校验,避免异常上传的文件导致后续逻辑报错:
- 将判断条件替换为:
if ($req->hasFile('image_name') && $req->file('image_name')->isValid())
内容的提问来源于stack exchange,提问作者ITtraders Nepal
相关产品推荐
相关产品推荐

