Javascript检查文件大小

时间:2011-10-26 22:20:13

标签: javascript filesize

如果网络服务器上文件的文件大小(例如http://www.mysite.com/myfile.js)大于0字节,是否可以继续使用javascript进行检查?如果是,则返回true或false值?

提前致谢!

4 个答案:

答案 0 :(得分:12)

从理论上讲,您可以使用XHR发出HTTP HEAD请求并检查响应标头中的Content-Length

HEAD请求与常规GET请求相同,但服务器不得返回实际内容。换句话说,服务器会回复您尝试GET资源时的标头,但随后会停止并且不会发送文件。

但是some severs respond HEAD Content-Length 0标头为HEAD,无论文件的实际大小如何。其他人回复文件的大小。

为了实现这一目标,您必须祈祷您的服务器将文件的实际大小返回到$.ajax('/myfile.js', { type: 'HEAD', success: function(d,r,xhr) { fileSize = xhr.getResponseHeader('Content-Length'); } }); 请求。

如果是,getting that value is easy

0

请注意,即使HEAD //字节,JSFiddle的服务器也会在16916时返回HEAD

还要注意jQuery的docs say关于HTTP请求类型选项的内容:

  

要求的类型(“POST”或“GET”),默认为“GET”。注意:此处也可以使用其他HTTP请求方法,例如PUT和DELETE,但并非所有浏览器都支持它们。

我刚刚在IE 6-10,Firefox 3.6-7,Opera 9-11和Chrome中测试了这个小提琴,并且每个浏览器都正确发出了{{1}}请求,所以我不担心这个含糊不清不相容的声明。更值得关注的是您的服务器如何响应。

答案 1 :(得分:2)

Javascript无法访问文件系统(谢天谢地),所以我不敢。

答案 2 :(得分:0)

josh3736给出的想法很棒。只有他给出的代码示例拒绝在我的浏览器(Chrome 20,Firefox 13,IE 8,Opera 12)中工作,原因是我不知道。

这是一个在我的案例中完美运作的那个:

jQuery.ajax
({
    cache: false,
    type: 'HEAD',
    url: 'myfile.js',
    success: function(d,r,xhr){alert('File size is ' + xhr.getResponseHeader('Content-Length') + ' bytes.')},
    error: function(xhr, desc, er){alert('ERROR: "' + xhr.responseText + '"')}
});

我还要注意,Apache板载XAMPP服务器可以正常处理HEAD请求,当然,当在localhost上运行时,浏览器会阻止此类请求,并显示错误消息:“origin localhost “Access-Control-Allow-Origin”不允许这样做(例如来自Chrome)。

答案 3 :(得分:-2)

IE: 如果您将“文档模式”设置为“标准”,则可以使用简单的javascript“大小”方法来获取上传文件的大小。

将即“文档模式”设置为“标准”:

<meta http-equiv="X-UA-Compatible" content="IE=Edge">

然后,使用'size'javascript方法获取上传文件的大小:

<script type="text/javascript">
    var uploadedFile = document.getElementById('imageUpload');
    var fileSize = uploadedFile.files[0].size;
    alert(fileSize); 
</script>

其他浏览器: 在所有其他浏览器上,您可以使用javascript'size'方法,没有任何问题。