MVC3 动作文件大小限制

Posted

技术标签:

【中文标题】MVC3 动作文件大小限制【英文标题】:MVC3 Action File Size Limit 【发布时间】:2012-06-05 06:03:58 【问题描述】:

我正在实现一个基于 jquery 的文件上传插件http://blueimp.github.com/jQuery-File-Upload/。您可以下载一个示例 MVC3 应用程序https://github.com/maxpavlov/jQuery-File-Upload.MVC3。

示例作者在主页视图中有评论:

@*为了将 MVC 操作用作 AJAX 调用的处理程序,请使用下面的表单声明。 (注释掉的那个) 不建议使用 MVC 控制器处理请求时无法控制 POST 请求的 maxMessageLength 这使上传大文件的功能毫无用处,除非您牺牲安全性并允许大文件 在全站范围内发布消息大小。

最好使用 HTTP 处理程序来处理上传请求,直到 MVC 框架提供设置 maxMessageLength 的方法 每个行动的基础 *@

现在还是这样吗?

我发现我可以在 web.config 中设置<httpRuntime maxRequestLength="x" />,但我的理解是这是一个安全漏洞。也是这样吗?

我更愿意在控制器中处理我的上传,而不是使用 HttpHandler,但我不想受到文件大小的限制,也不想引入任何安全漏洞,如果我不需要的话。

更新:

根据这篇文章File Upload ASP.NET MVC 3.0,默认文件大小限制为 4mb。我已确认此限制http://msdn.microsoft.com/en-us/library/e1f13641.aspx 并了解该漏洞。

这是通过控制器操作上传超过 4mb 的文件的唯一方法吗?

【问题讨论】:

【参考方案1】:

您可以在 web.config 中使用location 元素为具体的控制器操作设置上传大小限制:

<configuration>
    <location path="Home/UploadFiles">
        <system.web>
            <httpRuntime maxRequestLength="40960"/>
        </system.web>
    </location>
</configuration>

Home 是控制器名称,UploadFiles 是动作名称。此处的大小限制为 40MB。

不过,如果你问我,使用 Http Handler 处理文件上传并不是一个糟糕的解决方案。

【讨论】:

正是我想要的。谢谢! “位置”xml 节点必须是...“配置”的子节点? (在 web.config 中)。能具体说明一下吗? @sports 是的,它是 节点的子节点。查看我更新的答案。感谢您的意见:)

以上是关于MVC3 动作文件大小限制的主要内容,如果未能解决你的问题,请参考以下文章

如何限制lighttpd 上传文件的大小

SpringBoot上传文件大小限制的配置

修改 apache 上传文件大小限制

如何解决IIS7上传文件大小限制

go限制上传文件大小

解决gitlab限制上传文件大小的问题