26

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

样本作者在首页视图中有评论:

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

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

现在还是这样吗?

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

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

更新:

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

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

4

1 回答 1

52

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

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

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

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

于 2012-05-31T13:14:02.477 回答