Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在上传之前,确保上传文件的文件大小小于maxRequestLength?_C#_Asp.net - Fatal编程技术网

C# 在上传之前,确保上传文件的文件大小小于maxRequestLength?

C# 在上传之前,确保上传文件的文件大小小于maxRequestLength?,c#,asp.net,C#,Asp.net,我有一个带有文件上传控件的表单,用户可以在其中上传图像。在上传之前,我是否可以确保上传图像的文件大小低于配置的maxRequestLength,并通过这样做防止在文件大小过大时引发异常 我最初尝试查看控件的PostedFile的ContentLength,但没有成功,因为该文件已提交 我对增加maxRequestLength不感兴趣。从可用性的角度来看,一条简单的消息告诉人们不要这样做将大大有助于防止问题的发生 然后您可以尝试这个(YMMV):这只是对浏览器的提示,取决于支持语法的浏览器。显然,

我有一个带有文件上传控件的表单,用户可以在其中上传图像。在上传之前,我是否可以确保上传图像的文件大小低于配置的maxRequestLength,并通过这样做防止在文件大小过大时引发异常

我最初尝试查看控件的PostedFile的ContentLength,但没有成功,因为该文件已提交


我对增加maxRequestLength不感兴趣。

从可用性的角度来看,一条简单的消息告诉人们不要这样做将大大有助于防止问题的发生

然后您可以尝试这个(YMMV):这只是对浏览器的提示,取决于支持语法的浏览器。显然,隐藏字段需要紧跟在文件输入之前(或者在asp.net文件上载控件中,检查浏览器中的标记以确保)


其中的值以Kb为单位-因此上面的值将限制为半兆字节。不过,某些浏览器不支持此功能,因此您仍需要在服务器端进行检查,或者接受某些使用奇怪/古老/不同浏览器的用户仍可能尝试提交过大的文件


我只是不认为这在HTTP的范围内是可能的,我相信你必须使用flash上传程序。服务器知道文件大小的唯一方法是获取文件


查看厨房水槽演示,在

听起来您有一个要求,“防止异常”,以及一种您认为应该实现该目标的方法,“检查客户端的文件大小”

通过使用客户端技术(如Flash或Silverlight),您只能在客户端100%验证文件大小。这可以防止出现异常,但会迫使您将自己绑定到特定的客户端技术

您可以防止该异常,但它确实会在上载文件后发生(出于您之前所述的原因)。查看本文中的代码示例:


类似的功能在文件上传组件(如NeatUpload(开源,LGPL))中现成提供:->请参阅第4.5节。

即使在上传的文件完全传输之前,也可以确定正在上传的文件的大小。甚至在使用Internet Explorer时。通过使用HTTP的内容长度头
在java世界中:
首先,如果在前一个线程聚合之前处理在第一个servlet/filter/controller中到达服务器的请求,则可以在content-length头(request.getContentLength())中获取总文件大小。


第二,看一看ajax实现,它证明了这是可能的:

我实际上在这个线程中看到了一个这样做的例子:但我不太喜欢这样的想法,即对通过应用程序的所有请求都进行检查。我仍然认为客户端大小是最好的选择,这也应该允许多次上传
<input type="hidden" name="MAX_FILE_SIZE" value="500" />
<input type="file" />