Javascript检查文件大小

Ben*_*ton 6 javascript filesize

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

提前致谢!

jos*_*736 12

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

一个HEAD要求是相同的常规GET要求,除了服务器不能返回的实际内容.换句话说,服务器回复您尝试GET过资源时的标题,但随后停止并且不发送文件.

然而,一些西弗斯响应HEAD与请求Content-Length的报头0,而不管文件的实际大小无关.其他人回应文件的大小.

为了实现这一点,您必须祈祷您的服务器将文件的实际大小返回给HEAD请求.

如果是这样,那么获得该值很容易:

$.ajax('/myfile.js', {
    type: 'HEAD',
    success: function(d,r,xhr) {
       fileSize = xhr.getResponseHeader('Content-Length');
    }
});
Run Code Online (Sandbox Code Playgroud)

需要注意的是的jsfiddle的服务器总是返回0我们的时候HEAD /,即使/16916字节.

还要注意jQuery的文档对HTTP请求类型选项的说法:

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

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


Cli*_*ive 2

Javascript 无法访问文件系统(谢天谢地)所以恐怕不能。