Jquery 获取通过ajax请求的文件大小

Jquery 获取通过ajax请求的文件大小,jquery,ajax,filesize,Jquery,Ajax,Filesize,以下是我希望做的: 我想向一个文件发送一个ajax请求(最好使用jQuery),并在加载该文件后,确定所请求文件的大小 在谷歌搜索了一下之后,很明显,我甚至没有一个好主意去问正确的问题来解决这个问题。非常感谢您的帮助。您可以创建一个服务器端命令,该命令获取文件的路径和名称,打开文件以获取长度,并将大小发送回客户端。如何实现这一点取决于您使用的服务器端语言。这就是您要查找的操作类型吗?您可以发出HTTP请求,并通过读取HTTP头获得大致的文件大小 这种请求用于获取请求所隐含的URL的元信息,而不在

以下是我希望做的:

我想向一个文件发送一个ajax请求(最好使用jQuery),并在加载该文件后,确定所请求文件的大小


在谷歌搜索了一下之后,很明显,我甚至没有一个好主意去问正确的问题来解决这个问题。非常感谢您的帮助。

您可以创建一个服务器端命令,该命令获取文件的路径和名称,打开文件以获取长度,并将大小发送回客户端。如何实现这一点取决于您使用的服务器端语言。这就是您要查找的操作类型吗?

您可以发出HTTP请求,并通过读取HTTP头获得大致的文件大小

这种请求用于获取请求所隐含的URL的元信息,而不在响应中传输URL的任何内容

var xhr = $.ajax({
  type: "HEAD",
  url: "path/to/file.ext",
  success: function(msg){
    alert(xhr.getResponseHeader('Content-Length') + ' bytes');
  }
});

基本上,您可以执行HEAD HTTP请求并查询内容长度,返回X字节。

Hm。。。因此,我可以使用ajax调用一个php文件,它将加载我实际需要的文件的内容,计算出它有多大,然后将文件内容和大小返回到javascript。这样做可以让我轻松地从另一个域调用内容。这听起来非常棒——根本不是我想找的,而是一个很棒的解决方案。是的,我以前在创建授权下载控制器时用Java做过。您可能还想看看CMS的建议--我从未想过使用HEAD命令,但如果您只需要文件大小,这可能更有效。这是迄今为止唯一一个避免gzip编码导致内容长度无法返回的答案。我同意-我实际上可能会使用另一种方法来实现跨域功能,但这确实是我问的答案。@jakeisonline实际上,如果支持gzip编码,这是不可能的。。。内容长度头不会被发送(甚至在头请求中也不会),而且W3C禁止在请求头中设置接受编码,因此客户端解决方案现在似乎不可能。在当前的标准下,这根本不起作用。那么通过HTTPS呢?如果使用gzip编码,则不会发送内容长度头
var XHRObj = $.ajax({
    type:'HEAD',
    url:'/',
    success:function(data) {
        console.log( XHRObj.getResponseHeader('Content-Length') )
    }
})