防止在ASP.NET 4.0中上传大文件
我们想限制我们网站上的最大上传文件大小.我们已经在web.config中设置了相应的限制.我们遇到的问题是,如果上传了一个非常大的文件(例如1 GB),则在生成服务器端错误之前,将上传整个文件,并且错误的类型是不同的文件是巨大的还是不.
有没有办法在实际上传之前检测待处理文件上传的大小? 以下是我将相关的web.config设置限制为16 MB的请求: <?xml version="1.0" encoding="UTF-8"?> <configuration> <system.web> <httpRuntime maxRequestLength="12288"/> </system.web> <system.webServer> <security> <requestFiltering> <requestLimits maxAllowedContentLength="12582912"/> </requestFiltering> </security> </system.webServer> </configuration> 我已经尝试创建一个HTTP模块,所以我可以在请求生命周期早期拦截一个请求,但上传似乎发生在HttpApplication的BeginRequest事件之前: public class UploadModule : IHttpModule { private const int MaxUploadSize = 12582912; public void Init(HttpApplication context) { context.BeginRequest += handleBeginRequest; } public void Dispose() { } private void handleBeginRequest(object sender,EventArgs e) { // The upload takes place before this method gets called. var app = sender as HttpApplication; if (app.Request.Files.OfType<HttpPostedFile>() .Any(f => f.ContentLength > MaxUploadSize)) { app.Response.StatusCode = 413; app.Response.StatusDescription = "Request Entity Too Large"; app.Response.End(); app.CompleteRequest(); } } } 更新: 我知道像Flash这样的客户端技术可以在上传之前检测文件大小,但是我们需要一个服务器端解决方法,因为我们希望定位不支持Flash / Java / ActiveX / Silverlight的平台.我相信IIS或ASP.NET有一个错误,允许大文件上传,尽管有限制,所以我提交了一个bug here. ISAPI扩展可以帮助我比HTTP模块和处理程序更多地控制请求处理,例如,如果Content-Length头被认为大于允许的限制,允许我中止上传? 更新2: 叹. Microsoft已经关闭了我作为重复提交的错误,但没有提供任何其他信息.他们希望他们不要放弃球. 更新3: 万岁!据微软称:
解决方法
问题是上传使用HTTP Post请求立即发生,因此您只能在完成后才能检测到.
如果你想要更多的控制,你应该尝试基于Flash的上传小部件有这个和更多.查看这个链接http://www.ajaxline.com/10-most-interesting-upload-widgets (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- 在ASP.NET MVC中公开资源字符串到JavaScript文件的最佳方式
- 一个通过JSONP跨域调用WCF REST服务的例子(以jQuery为例)
- asp.net-mvc – 如何每秒自动刷新MVC PartialView
- asp.net-web-api – 使用WIF和OWIN中间件的角色与声明授权A
- 我可以在asp.net-mvc 3中的@ Ajax.Actionlink中传递一个Jav
- asp.net – Javascript:为什么如果(假)?
- 使用SQLite做本地数据缓存的思考
- 取消ASP.NET中的默认提交按钮
- asp.net-mvc – Visual Studio 2010是否支持MVC 5?
- asp.net-mvc – asp.net mvc错误处理的最佳做法
- asp.net-mvc – ASP.Net MVC中的分页和路由
- asp.net-mvc-4 – URL以’/’结尾时的服务器错误
- 是否可以使用ASP.NET ScriptManager来使用Window
- asp.net-mvc – 如何为特定的Controller / Actio
- ASP.NET API(MVC) 对APP接口(Json格式)接收数据与
- vbscript – 计算字符串中有多少个特定字符
- asp.net-mvc – AOP vs MVC FilterAttributes vs
- 在asp.net mvc中的RedirectToAction用法
- asp.net-mvc – 导出Excel文件以查看(MVC)
- asp.net-mvc – 如何使用ASP.NET MVC 3编辑IEnum