繁体   English   中英

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

[英]Ensure file size of uploaded file is lower than maxRequestLength before the upload occurs?

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

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

我没兴趣增加maxRequestLength。

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

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

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

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

在发现该网页 ,并同时这一个

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

查看http://www.swfupload.orghttp://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 /过滤器/控制器中的任何先前线程质量之前到达服务器的请求,您将获得内容长度标头中的总文件大小(请求。 getContentLength())。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM