我有一个FileUpload控件,用户可以上传图片。我可以确保上传图像的文件大小低于配置的maxRequestLength在上传发生之前,并通过这样做防止文件大小过大时引发异常?在上传之前确保上传文件的文件大小低于maxRequestLength?
我最初尝试查看控件的PostedFile的ContentLength是无济于事的,因为该文件已经提交。
我对增加maxRequestLength没有兴趣。
我有一个FileUpload控件,用户可以上传图片。我可以确保上传图像的文件大小低于配置的maxRequestLength在上传发生之前,并通过这样做防止文件大小过大时引发异常?在上传之前确保上传文件的文件大小低于maxRequestLength?
我最初尝试查看控件的PostedFile的ContentLength是无济于事的,因为该文件已经提交。
我对增加maxRequestLength没有兴趣。
从可用性的角度来看,一条简单的消息告诉人们不要走很长的路,以防止问题。你可以试试这个(YMMV):它只是提示浏览器,并且依赖于支持语法的浏览器。隐藏字段显然需要立即在您的文件输入之前(或在asp.net中,您的文件上传控件,检查浏览器中的标记以确保)。
<input type="hidden" name="MAX_FILE_SIZE" value="500" />
<input type="file" />
其中值是以Kb为单位 - 所以上面将限制为半兆字节。一些浏览器不会支持这个,所以你仍然需要在服务器端检查它,或者接受一些奇怪/古老/不同浏览器的人可能仍然会尝试提交超大文件。
我只是不认为这是HTTP的范围内可能发现,你将不得不使用闪光灯上传这个我相信。服务器知道文件的大小的唯一方法是让服务器获取文件
退房http://www.swfupload.org和http://demo.swfupload.org/v220/featuresdemo/index.php
这听起来像你有一个要求,厨房的水槽演示,“防止例外“,并且您认为您应该实现该目标的一种方式,”检查客户端上的文件大小。“
您只能使用客户端技术(如Flash或Silverlight)100%验证客户端上的文件大小。这可以防止发生异常,但会迫使您将自己与特定的客户端技术联系起来。
您可以防止发生异常,但是在文件上传之后确实发生了异常(出于您之前说明的原因)。检查这篇文章的代码示例:http://aspnetresources.com/articles/dark_side_of_file_uploads
在NeatUpload(开源,LGPL)等文件上传组件中提供了类似的功能:http://www.brettle.com/NeatUpload-1.3/dotnet/docs/Manual.html - >请参阅第4.5节。
即使在上传文件完全传输之前,也可以确定上传文件的大小。即使使用Internet Explorer。通过使用HTTP的内容长度标题!
在java世界中:
首先,如果您在第一个servlet /过滤器/控制器中处理到达服务器的请求之前,那么您之前将获得总文件大小内容长度标头(request.getContentLength())。
二线有一个Ajax实现一看证明,它是可能的:http://www.ajaxfilebrowser.com/
我居然看到了这个线程做的一个例子:http://forums.asp.net/p/1096161/ 1655494.aspx但我不太喜欢这个检查是通过应用程序的所有请求完成的想法。 – nillls 2010-11-23 14:04:45