建议在上传时检查文件大小的方法

Ram*_*Vel 12 c# file-upload http http-headers web

我正在开发一个支持文件上传的Web应用程序.我已经熟悉检查服务器端的大小,但我想检查客户端的文件大小.

我知道它的浏览器限制,出于安全原因我们无法访问文件属性.所以我尝试了swfupload和uploadify组件.两者都很好,满足需求.

但限制是取决于闪存,所以如果我的最终用户没有安装闪存,那么我最终会遇到问题.要求他们安装闪存是另一回事,但它是一个门户网站和用户群是巨大的.所以我不喜欢让他们安装flash的想法.

今天我遇到了gmail中的文件上传功能.并且在没有安装闪存的情况下在浏览器(IE)中进行了测试 我发现的很有趣.如果您上传了一个大文件,他们会进行回发并立即返回文件大小过大的消息.

如何实现,如何在不下载整个内容的情况下找到文件的大小.我相信这必须通过阅读HTTP标头信息来完成.我对吗?

所以这就是我想要实现的确切功能.如果已经安装了闪存,我可以使用uploadify来检查大小,否则可能是我将实现 - 从未听过的技术 - 谷歌使用.

谁能推荐我怎么做?

以前任何人都遇到过类似的问题,你做了什么?

更新:

使用FF安装的Flash上​​传Gmail

替代文字

IE中没有flash

替代文字

Dar*_*rov 6

您可以查看File API,它是HTML 5的草稿.这是一篇很好的文章.如果浏览器支持Gmail,那就是Gmail使用的功能.但是没有办法确保这适用于所有浏览器.


Ser*_*que 5

在IE中,您可以使用JS和ActiveX来完成:

function A()
{
  var oas = new ActiveXObject("Scripting.FileSystemObject");
  var d = document.a.b.value;
  var e = oas.getFile(d);
  var f = e.size;
  alert(f + " bytes");
}

</script>
</head>
<body>
<form name="a">
<input type="file" name="b">
<input type="button" name="c" value="SIZE" onClick="A();">
</form>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

  • ActiveX,天啊.请不.OP排除了Flash,你提出的是ActiveX吗?这只是IE的东西,我个人认为它是完全弃用的技术. (2认同)
  • @Darin Dimitrov:我也是,但IE7怎么样?这总是同样的问题...我完全同意:编写IE支持非常烦人,但有些人没有选择:有客户,有老板强迫他们这样做(祸不见他们......祸了我). (2认同)

Ram*_*Vel 1

经过大量搜索,我发现我们可以使用maxAllowedContentLength来限制 ASP.Net 应用程序中的上传大小。请记住,此设置仅适用于 IIS 7 或更高版本。

由于这是在 IIS 级别处理的,因此我们不需要在服务器代码中处理任何内容。如果超出大小限制,则会返回错误代码404.13。这样你就可以很容易地检查客户端的代码来确定问题所在。

如果客户端计算机上未安装闪存,这就是我处理大文件的方法。

希望这可以帮助某人。

有关此设置的更多信息,请阅读此内容