2012-05-30 140 views
24

我正在实施基于jQuery的文件上传插件http://blueimp.github.com/jQuery-File-Upload/。有一个示例MVC3应用程序,你可以下载https://github.com/maxpavlov/jQuery-File-Upload.MVC3MVC3动作文件大小限制

样品的作者已在首页查看评论:

@ *为了使用MVC行动AS AJAX的处理函数调用,用如下的形式声明。 (已注释) 由于使用MVC控制器处理请求时无法控制此请求,因此无法控制POST请求的maxMessageLength 这种情况导致无法上载大型文件的功能,除非您能够保证安全并允许使用大型文件 发布消息大小站点广泛。

最好是使用HTTP处理程序处理上传请求,直到MVC框架提供方法来设置maxMessageLength ON PER ACTION BASIS * @

这仍然是这样吗?

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

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

更新:

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

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

回答

48

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

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

首页是控制器的名字和UploadFiles是一个行动的名称。这里的大小限制是40MB。

尽管如此,如果你问我,使用HttpHandler处理文件上传并不是一个坏的解决方案。

+0

正是我在找的东西。谢谢! – Rich

+2

“location”xml节点必须是...“配置”的子节点? (在web.config中)。你可以指定吗? – sports

+1

@sports是的,它是节点的子节点。结帐我更新的答案。感谢您的输入 :) – lucask