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

Laravel 7中如何通过多个文件输入框实现多文件批量上传?

错误原因

你当前往$files数组中存入的是自定义的文件名字符串,而非$request获取到的上传文件实例对象,字符串类型无法调用move()方法,因此触发报错。

正确实现代码

可以先配置上传字段和对应存储文件名的映射,再遍历处理所有上传文件:

// 配置所有需要处理的文件字段和对应存储文件名的映射
$fileFields = [
    'resume' => $resumeFilename,
    'profile_photo' => $imagefilename,
    'id_proof' => $id_proof,
    'prevEmpType' => $prevEmpType,
    'offer_letter' => $offer_letter,
    'con_a_agree' => $con_a_agree
];

// 定义存储目录的绝对路径,避免相对路径定位错误
$uploadPath = public_path('uploads/');
// 提前判断目录是否存在,不存在则自动创建
if (!file_exists($uploadPath)) {
    mkdir($uploadPath, 0755, true);
}

foreach ($fileFields as $fieldName => $saveFileName) {
    if ($request->hasFile($fieldName)) {
        // 从请求中获取上传文件实例
        $uploadedFile = $request->file($fieldName);
        // 执行文件移动,第一个参数为存储目录,第二个参数为自定义的保存文件名
        $uploadedFile->move($uploadPath, $saveFileName);
    }
}
额外注意事项
  • 前端表单必须添加enctype="multipart/form-data"属性,且每个file输入框的name属性和上面$fileFields的键名完全对应,否则无法正常获取上传文件
  • 需要给uploads目录设置正确的写入权限,Linux环境下通常设置为755或775权限即可
  • 建议额外添加上传文件的类型、大小校验规则,避免非法文件上传带来的安全风险

内容的提问来源于stack exchange,提问作者Nikhil Dange

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.16 07:06:05