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

Laravel大文件图片上传失败:超1MB返回400错误求助

解决Laravel大文件上传400错误的方案

针对你遇到的大文件上传返回400的问题,核心是PHP和Laravel的文件上传限制配置没跟上,按以下步骤排查修改:

  • 调整PHP核心配置(php.ini)
    找到你的PHP配置文件(不同环境路径不同,比如Ubuntu是/etc/php/8.2/fpm/php.ini,Windows是PHP安装目录下的php.ini),修改以下参数:

    upload_max_filesize = 10M    ; 单个文件最大上传大小,按需调整数值
    post_max_size = 12M          ; POST请求总大小,必须大于upload_max_filesize
    max_execution_time = 60      ; 脚本执行超时时间,大文件上传需要更长时间
    

    修改后重启Web服务器(Apache/Nginx)和PHP-FPM(如果使用FPM模式)。

  • 给Laravel请求添加文件大小验证
    你的当前代码未做文件大小校验,建议在store方法开头加上验证规则,既能明确拦截过大文件,也能返回更清晰的错误信息:

    public function store($id, Request $request)
    {
        // 新增验证规则,max单位为KB,10240对应10MB
        $validated = $request->validate([
            'image' => 'required|file|max:10240',
        ]);
    
        if(!$request->hasFile('image')) {
            return response()->json(['upload_file_not_found'], 400);
        }
        $file = $request->file('image');
        if(!$file->isValid()) {
            return response()->json(['invalid_file_upload'], 400);
        } 
        $path = Storage::putFile('logements', $request->file('image'));
        return response()->json($path);
    }
    
  • 检查Nginx客户端请求体限制(若使用Nginx)
    如果服务器用的是Nginx,需要在站点配置文件或nginx.conf中添加/修改:

    client_max_body_size 10M;
    

    修改后重启Nginx,否则Nginx会先拦截超大小的请求,导致Laravel根本接收不到请求。

  • 确认Laravel存储目录权限
    虽然小文件能正常上传,还是要确认storage/app/logements目录权限是否正确,确保Laravel有写入权限:

    chmod -R 755 storage/
    chown -R www-data:www-data storage/ # Linux环境下,www-data为Web服务器用户
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 02:50:26