在上传之前确保上传文件的文件大小低于maxRequestLength?

时间:2010-11-23 13:57:44

标签: c# asp.net

我有一个带有FileUpload控件的表单,用户可以在其中上传图片。在上传发生之前,我是否可以确保上载映像的文件大小低于配置的maxRequestLength,这样可以防止在文件大小过大时抛出异常?

我最初尝试查看控件的PostedFile的ContentLength无效,因为文件已经提交。

我没有兴趣增加maxRequestLength。

4 个答案:

答案 0 :(得分:1)

从可用性的角度来看,一条简单的信息告诉人们不会在很大程度上阻止这个问题。

然后你可以尝试这个(YMMV):它只是浏览器的一个提示,并且依赖于支持语法的浏览器。隐藏字段显然需要紧接在您的文件输入之前(或者在asp.net中,您的文件上传控件,检查浏览器中的标记以确定)。

<input type="hidden" name="MAX_FILE_SIZE" value="500" />
<input type="file" />

其中值为Kb - 因此上述限制为半兆字节。有些浏览器不会支持这个,所以你仍然需要在服务器端检查它,或者接受一些奇数/古代/不同浏览器的人仍然可能尝试提交超大文件。

找到this webpagealso this one

答案 1 :(得分:0)

我只是觉得这不可能在HTTP的范围内,你将不得不使用闪存上传器,我相信。服务器知道文件大小的唯一方法是服务器获取文件

http://www.swfupload.org

查看http://demo.swfupload.org/v220/featuresdemo/index.php和厨房水槽演示

答案 2 :(得分:0)

听起来你有一个要求,“防止例外”,以及你认为应该实现这个目标的方式,“检查客户端的文件大小。”

您只能使用客户端技术(如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 - &gt;请看4.5节。

答案 3 :(得分:0)

即使在上传文件完全传输之前,也可以确定上传文件的大小。即使使用Internet Explorer也是如此。通过使用HTTP的内容长度标头!
在java世界中:
首先,如果您处理在第一个servlet /过滤器/控制器中的任何先前线程质量之前到达服务器的请求,您将获得内容长度标头中的总文件大小(请求。 getContentLength())。

第二,看看ajax实现,证明它是可能的:http://www.ajaxfilebrowser.com/