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

使用Maatwebsite包上传Excel导入数据提示File not found at path: file.xlsx

错误原因
  • 核心原因1:前端表单未配置enctype="multipart/form-data"属性,上传文件必须携带该属性,否则后端无法正确接收上传的文件流,导致$request->file读取到的是文件名字符串而非上传文件实例,Maatwebsite找不到对应路径的文件就会抛出该错误。
  • 原因2:控制器中直接读取$request->file,未做文件存在性和格式校验,若文件上传失败时直接传入参数会触发路径不存在错误。
  • 其他可能原因:php.ini配置未开启文件上传、上传文件大小超出配置限制、storage目录无读写权限。
修复方案

1. 修改前端Blade表单

给form标签添加enctype="multipart/form-data"属性,修改后代码如下:

<form action="{{ route('addcutsom.execution') }}" method="POST" enctype="multipart/form-data">
    @csrf
    <label class="control-label">Upload File:</label>
    <input class="form-control" name="file" type="file" required>

    <button class="btn btn-primary" type="submit">ثبت</button>  
</form>

2. 修改控制器逻辑,增加文件校验

先验证文件是否上传成功、格式是否合法,再获取文件实例传入Excel::import方法,修改后代码如下:

public function executeImport(Request $request)
{
    // 校验文件是否上传且为合法格式
    $request->validate([
        'file' => 'required|file|mimes:xls,xlsx,csv'
    ]);

    Excel::import(new CustomExamImport, $request->file('file'));
    return "Records are imported";
}

3. 可选环境校验(如果上述修改后仍报错)

  • 检查php.ini配置:确认file_uploads = On,upload_max_filesize和post_max_size数值大于上传的Excel文件大小
  • 检查Laravel项目storage目录权限,确保运行PHP的用户对该目录有读写权限

额外提示:你当前的CustomExamImport类中查询了$user_id但未赋值到OlympiadExamExecution的字段中,若业务需要关联用户可补充对应字段的赋值逻辑

内容的提问来源于stack exchange,提问作者Pouya Vaghefi

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 04:27:06