2009-02-13 167 views
6

我在我的web应用程序中有一个文件输入标签。我想在将文件发送到服务器之前检查该文件是否太大。当然,我仍然有验证服务器端。有什么办法可以用JavaScript来做到这一点?它必须在IE7 +和FF3 +中工作。谢谢。如何在上传文件之前检索文件的大小?

编辑:somefileinputobject.files [0] .filesize工作在FF,但不是IE。

+0

不幸的是,这是一些还没有使用插件(例如flash)的跨平台。 http://www.w3.org/TR/FileAPI/是Firefox支持的工作规范。 – Matthew 2010-03-19 04:05:49

+0

Duplicate:http://stackoverflow.com/questions/158149/how-do-you-restrict-the-size-of-a-file-being-uploaded-with-javascript-or-java-w – 2010-03-20 10:36:08

+0

请参阅[this更新的问题和答案](http://stackoverflow.com/questions/3717793/javascript-file-upload-size-validation)在现代浏览器中,这是可能的,没有请求到服务器,虽然验证必须完成无论如何,服务器也是如此。 – Pointy 2015-10-21 17:36:27

回答

2

这是一个困难的问题限制了发布数据的总大小。您必须使用AJAX来完成此操作,并使用POST请求中浏览器发送给服务器的文件标头。

雅虎的UI库有一个工具来帮助解决这个问题。 YUI Uploader

0

Javascript不能这样做。它会有严重的安全问题。也许闪光虽然可以。

0

简答:不,你应该在服务器上处理这个问题。

长答案:不可靠。与IE浏览器,你可以这样做:

function checkSize(filespec) { 
var fso, f, s; 
fso = new ActiveXObject("Scripting.FileSystemObject"); 
f = fso.GetFile(filespec); 
s = f.size; 
// Do something with var s 
} 

但是,这可以很容易地通过浏览器的安全设置或其他浏览器或平台的 使用情况comprimised。

0

不能使用JavaScript来实现可靠的所有浏览器,但你可以从web.config

0

如果您使用的是传统的文件输入控件,那么您确实没有太多的选项。你不能在客户端检查它,它会打你配置的maxRequestLength之前,你有机会检查它的服务器端。但是,您可以捕获maxRequestLength超出时发生的异常。

相关问题