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

使用Ajax和Laravel上传大文件时中途暂停问题求助

排查Laravel + Ajax(simpleUpload)大文件上传中途暂停问题

大文件上传中途暂停的核心原因基本都集中在服务器/应用的配置限制或插件参数设置上,结合你的场景,我们一步步拆解排查:

1. 先检查PHP核心配置(最常见诱因)

大文件上传失败大概率是PHP默认的上传限制在搞鬼,你需要修改php.ini(如果是PHP-FPM环境,可能要改php-fpm.conf或对应池配置):

  • upload_max_filesize: 设为比目标文件大的值,比如30M(要上传20M+,至少留冗余)
  • post_max_size: 必须大于upload_max_filesize(因为POST请求包含文件+表单数据),比如40M
  • max_execution_time: 上传大文件需要更长处理时间,默认30秒不够,改成180(3分钟)
  • max_input_time: 同步调整为180,避免读取请求超时
  • memory_limit: 确保有足够内存处理文件,比如128M

修改后记得重启PHP服务(如systemctl restart php-fpm)和Web服务器。

2. 检查Laravel端的配置与验证

  • 验证规则限制:确认控制器里的文件验证规则没有卡大小,比如:
    $request->validate([
        'file' => 'required|file|max:30720', // 这里是30M,按需调整
    ]);
    
  • 环境配置覆盖:有些环境会在Laravel根目录的.user.ini或public/.htaccess(Apache环境)里单独配置PHP参数,检查这些文件有没有覆盖上面的核心配置。

3. 检查Web服务器的限制

Apache环境

检查httpd.conf或站点目录的.htaccess:

  • 添加或修改LimitRequestBody 41943040(对应40M,单位是字节),限制POST请求的总大小
  • 调整Timeout 180,延长请求超时时间

Nginx环境

修改nginx.conf或站点配置文件:

  • 增加client_max_body_size 40M;,限制客户端请求的最大Body大小
  • 设置fastcgi_read_timeout 180;,避免FastCGI处理过程中超时断开

修改后重启Web服务器生效。

4. 检查simpleUpload插件的配置

插件本身也可能有大小或超时限制:

  • 初始化插件时确认maxSize参数足够大,比如:
    $('#uploader').simpleUpload({
        url: '/your-upload-route',
        maxSize: 30 * 1024 * 1024, // 30M,换算成字节
        timeout: 180000, // 3分钟,单位是毫秒
        // 其他配置...
    });
    

5. 最后排查服务器与网络细节

  • 检查服务器上传目录的磁盘空间,确保有足够空间存储大文件
  • 查看错误日志:PHP错误日志、Nginx/Apache日志、Laravel的storage/logs目录,里面的具体报错(比如request entity too large、超时信息)是定位问题的关键
  • 本地开发环境的话,检查防火墙、杀毒软件有没有拦截大文件上传请求

验证测试

改完配置后先传一个25M左右的文件测试,如果还是失败,优先看日志里的错误信息,它会直接告诉你问题出在哪。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 07:17:18