获取大小通过AJAX请求
这里就是我希望做的事:获取大小通过AJAX请求
我想送一个Ajax请求到一个文件中(最好是用jQuery),一旦该文件已加载,确定大小的请求文件。
经过一番Google搜索,很明显,我甚至都不知道正确的问题要求解决这个问题。任何帮助将不胜感激。
您可以发出HTTP HEAD请求,并通过读取Content-Length HTTP标头获取文件大小近似值。
这种请求用于获取有关请求隐含的URL的元信息,而不在响应中传输任何内容。
var xhr = $.ajax({
type: "HEAD",
url: "path/to/file.ext",
success: function(msg){
alert(xhr.getResponseHeader('Content-Length') + ' bytes');
}
});
您可以创建一个服务器端命令,它接受文件的路径和名称,打开文件以获取长度,然后将大小发送回客户端。你怎么做取决于你使用的服务器端语言。这是你正在寻找的行动的类型?
嗯...所以,我可以使用ajax调用一个php文件,它会加载我真正想要的文件的内容,找出它有多大,然后将文件内容和大小都返回给javascript 。这样做会让我可以毫无困难地从另一个域名中调用内容。这听起来非常出色 - 完全不是我以为我在寻找的东西,而是一个绝妙的解决方案。 – Peter 2009-09-27 20:02:11
是的,在创建授权的下载控制器时,我已经使用Java完成了这项工作。您可能还想看看CMS的建议 - 我从来没有想过使用HEAD命令,但如果您只需要文件大小,那可能会更加出色。 – 2009-09-27 20:06:22
这是迄今为止唯一的答案,它避免了gzip编码导致内容长度不被发回。 – user3338098 2015-05-21 16:09:47
var XHRObj = $.ajax({
type:'HEAD',
url:'/',
success:function(data) {
console.log(XHRObj.getResponseHeader('Content-Length'))
}
})
你基本上做一个HEAD HTTP请求和查询内容长度,它返回X字节。
如果使用gzip编码,则不会发送内容长度标头 – user3338098 2015-08-14 14:50:13
+ upvote,这应该是真正的答案:) – 2009-09-27 20:04:23
谢谢@meder! – CMS 2009-09-27 20:05:56
我同意 - 我实际上最终可能会使用其他方法来实现跨域功能,但这实际上是我询问时所寻找的答案。 – Peter 2009-09-27 20:06:42