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

使用Ajax+FormData上传文件至IIS7时被截断至80KB以下的问题

解决IIS7下Ajax+FormData上传文件被截断/仅首次成功的问题

老哥,你遇到的这个问题我之前也帮人排查过,结合你说的「调试模式正常、IIS首次启动能传一次、文件被砍到80KB以下」这几个点,基本可以锁定是IIS的请求限制或者缓存/响应处理的锅,给你整理几个针对性的排查和解决步骤:

1. 先调大IIS的请求长度限制

IIS默认对请求大小有严格限制,这大概率是文件被截断的核心原因:

  • 打开IIS管理器,找到你的目标站点,双击请求筛选
  • 右侧点击「编辑功能设置」,把最大允许请求长度(单位是KB)拉到足够大,比如设成102400(也就是100MB),同时把「允许未指定的请求长度」勾选上
  • 另外一定要检查站点根目录的web.config,如果里面有<httpRuntime>节点,要保证maxRequestLength和executionTimeout参数配置到位:
<system.web>
  <httpRuntime maxRequestLength="102400" executionTimeout="3600" />
</system.web>

⚠️ 注意:maxRequestLength的单位是KB,executionTimeout是请求超时时间(单位秒),别搞混了

2. 排查IIS的压缩/缓存干扰

你说「仅首次运行成功」,这个特征很可能和IIS的动态压缩或者输出缓存有关:

  • 打开IIS管理器,找到站点,双击压缩,暂时关掉「启用动态内容压缩」,然后再测试上传——有些情况下压缩模块会乱改FormData的传输结构,导致后续请求失败
  • 接着检查输出缓存设置,找到你Ajax请求的上传接口(比如ASHX/ASPX地址),确保没有给这个接口启用缓存,避免IIS返回缓存的错误响应

3. 修正Ajax请求的关键配置

很多人写Ajax上传时会犯两个低级错误,直接导致传输异常:

  • 绝对不要手动设置contentType: "multipart/form-data"!FormData会自动生成带正确boundary的Content-Type,手动设置反而会破坏数据结构
  • 必须设置processData: false,防止jQuery自动把FormData转成普通表单数据,导致文件流被截断
    给你贴个正确的Ajax上传示例:
var formData = new FormData(document.getElementById('yourUploadForm'));
$.ajax({
  url: '/UploadHandler.ashx', // 你的后端处理地址
  type: 'POST',
  data: formData,
  processData: false, // 必须设为false
  contentType: false, // 必须设为false,不要手动指定
  success: function(res) {
    console.log('上传搞定!');
  },
  error: function(xhr, status, err) {
    console.error('上传炸了:', err);
  }
});

4. 检查后端处理代码的资源泄漏

如果你的后端是ASP.NET的ASHX/ASPX,要确保上传处理逻辑没有用静态变量或者没释放资源,导致首次请求后后续请求崩了:

  • 比如在ASHX中,不要把文件流、数据库连接这类资源声明成静态的,每次请求都要重新初始化
  • 处理完上传后,一定要手动关闭文件流、释放资源,比如用using语句包裹流操作:
using (var fs = new FileStream(savePath, FileMode.Create))
{
  request.Files[0].InputStream.CopyTo(fs);
}

5. 开IIS日志查具体错误

如果上面的步骤都没解决,那就开IIS的详细日志抓错误:

  • 打开IIS管理器,找到站点,双击日志,设置日志格式为「W3C」,确保勾选Bytes Sent、Bytes Received、Status、Substatus这些字段
  • 上传文件后,去默认日志路径C:\inetpub\logs\LogFiles里找对应的日志,看有没有4xx/5xx状态码(比如413就是请求实体过大),这能直接帮你定位问题根源

按这个顺序排查,基本能解决你的问题。要是还不行,把你的后端处理代码贴出来,我再帮你抠细节~

内容的提问来源于stack exchange,提问作者欧阳福标

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 09:43:46