是否有可能使用JavaScript定期检查Web服务器上文件(例如http://www.mysite.com/myfile.js)的文件大小是否大于0字节,如果是,则返回true或false值?
谢谢!
是否有可能使用JavaScript定期检查Web服务器上文件(例如http://www.mysite.com/myfile.js)的文件大小是否大于0字节,如果是,则返回true或false值?
谢谢!
HEAD
请求并检查响应标头中的Content-Length
。
HEAD
请求与常规GET
请求相同,除了服务器不能返回实际内容。换句话说,服务器会回复它将要发送给你的资源的标头,但随后停止,不发送文件。HEAD
请求的响应是0
的Content-Length
标头,无论文件的实际大小如何。其他服务器会响应文件的大小。HEAD
请求。$.ajax('/myfile.js', {
type: 'HEAD',
success: function(d,r,xhr) {
fileSize = xhr.getResponseHeader('Content-Length');
}
});
HEAD /
时,JSFiddle的服务器始终返回0
,即使/
为16916
字节。我刚在IE 6-10、Firefox 3.6-7、Opera 9-11和Chrome中测试了这个Fiddle,每个浏览器都正确发出了要发出的请求类型(“POST”或“GET”),默认为“GET”。注意:其他HTTP请求方法,如PUT和DELETE,在此处也可以使用,但并非所有浏览器都支持。
HEAD
请求,所以我不会担心那个模糊的不兼容性声明。更令人担忧的是你的服务器如何响应。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 + '"')}
});
HEAD
请求完全正常工作,但当在本地主机上运行时,浏览器会阻止此类请求,并显示错误信息:"Origin localhost is not allowed by Access-Control-Allow-Origin"(来自Chrome的示例)。如果您将IE的“文档模式”设置为“标准”,则可以使用简单的JavaScript“size”方法来获取上传文件的大小。
将IE的“文档模式”设置为“标准”:
<meta http-equiv="X-UA-Compatible" content="IE=Edge">
<script type="text/javascript">
var uploadedFile = document.getElementById('imageUpload');
var fileSize = uploadedFile.files[0].size;
alert(fileSize);
</script>
其他浏览器: 在所有其他浏览器中,您可以毫无问题地使用JavaScript的“size”方法。