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

MVC环境下10MB文件上传至SQL数据库失败问题求助

解决大文件上传SQL数据库的问题

嘿,我来帮你搞定这个大文件上传的麻烦!你的代码本身没什么明显问题,问题应该出在ASP.NET/IIS的请求大小限制和SQL Server字段类型这两个配置层面,咱们一步步排查:

1. 检查ASP.NET和IIS的请求大小限制

默认情况下,ASP.NET和IIS会限制上传文件的大小,防止恶意请求。你需要修改web.config文件来放宽这个限制:

修改ASP.NET的请求长度限制(maxRequestLength)

在<system.web>节点下添加或更新这个配置(单位是KB,10MB=10*1024=10240):

<httpRuntime maxRequestLength="10240" executionTimeout="3600" />
  • maxRequestLength:设置允许的最大请求大小(包含文件)
  • executionTimeout:延长请求超时时间,避免大文件上传时超时

修改IIS的请求内容长度限制(maxAllowedContentLength)

在<system.webServer>节点下的<security>里添加这个配置(单位是字节,10MB=1010241024=10485760):

<system.webServer>
  <security>
    <requestFiltering>
      <requestLimits maxAllowedContentLength="10485760" />
    </requestFiltering>
  </security>
</system.webServer>

如果你的web.config里没有<security>或<requestFiltering>节点,直接创建即可。

2. 检查SQL Server字段类型

你的数据库表tblFile中的Data字段如果不是VARBINARY(MAX),就会限制存储的文件大小:

  • 如果是VARBINARY(n)(n是固定数值,比如512000即0.5MB),那超过这个大小的文件就会报错
  • VARBINARY(MAX)支持最大2GB的存储,完全满足10MB的需求

修改字段类型的SQL语句

如果字段类型不对,执行这条SQL来修改:

ALTER TABLE tblFile ALTER COLUMN Data VARBINARY(MAX);

3. 恢复代码中的文件大小验证

你代码里注释掉了文件大小检查,建议恢复并改成10MB的限制,这样在代码层面也能提前拦截过大的文件:

decimal maxFileSizeMB = 10;
if (file.ContentLength > (maxFileSizeMB * 1024 * 1024))
{
    return Json(new { success = false, error = "File size is too big - max 10MB allowed" }, JsonRequestBehavior.AllowGet);
}

总结

按照上面的步骤修改配置和数据库字段,应该就能解决1MB以上文件上传报错的问题了。核心就是放宽ASP.NET/IIS的请求限制,同时确保数据库字段能容纳大文件。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.08 19:02:29