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

如何在Laravel中使用Laravel Excel导入多个Excel文件

Laravel Excel多文件导入修复方案

核心问题出在前端文件字段命名不符合PHP多文件上传规范,按以下步骤修改即可正常运行:

1. 修改前端表单文件字段

多文件上传场景下,file类型input的name属性必须加[]后缀,否则服务端只会解析第一个上传的文件,无法生成文件数组。
把表单里的input行从:

<input type="file" name="file" class="custom-file-input" id="customFile" multiple>

修改为:

<input type="file" name="file[]" class="custom-file-input" id="customFile" multiple>

完整修正后的表单代码:

<form action="{{ route('file-import') }}" method="POST" enctype="multipart/form-data">
    @csrf
    <div class="form-group mb-4" style="max-width: 500px; margin: 0 auto;">
        <div class="custom-file text-left">
            <input type="file" name="file[]" class="custom-file-input" id="customFile" multiple>
            <label class="custom-file-label" for="customFile">Choose file</label>
        </div>
    </div>
    <button class="btn btn-primary">Import data</button>
</form>

2. 控制器端增加校验逻辑

不要直接遍历请求里的file字段,先做参数校验,避免非法上传、空文件导致的程序报错:

public function fileImport(Request $request) 
{
    // 校验上传参数:必须传文件数组,每个文件格式为xlsx/xls/csv
    $request->validate([
        'file' => 'required|array',
        'file.*' => 'required|file|mimes:xlsx,xls,csv',
    ]);

    foreach($request->file('file') as $uploadedFile){
        // 逐文件执行导入,store方法会自动生成唯一文件名存到storage/app/temp目录,提前确保该目录有写入权限
        Excel::import(new LogsImport, $uploadedFile->store('temp'));
    }

    return back()->with('status', '文件全部导入完成');
}

调试技巧

不要直接打印整个$request对象,里面嵌套了路由、容器、配置等大量冗余信息,要查看上传文件只需要调用$request->allFiles(),就能清晰看到所有上传的文件结构。
如果修改后依然无法获取文件,检查php.ini配置:

  • post_max_size 要大于单次上传所有文件的总大小
  • upload_max_filesize 要大于单个文件的最大体积
  • 确保表单没有遗漏enctype="multipart/form-data"属性(你现有代码里已经加了,这点没问题)

内容的提问来源于stack exchange,提问作者Alexandru Tugui

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 08:09:21