无论如何,使用javascript(或类似jquery)获取图像文件大小

无论如何,使用javascript(或类似jquery)获取图像文件大小,javascript,jquery,Javascript,Jquery,比如: 我想得到logo1w.png文件大小7.3kb 如何实现它?您不能使用javascript(很抱歉,即使是神奇的jQuery在这里也帮不上忙!)。您需要一个服务器端脚本来获取图像,并计算返回页面的大小 注意-请注意,OP并不拥有谷歌域名 查看此链接:您可以对图像URL执行HTTP HEAD请求。这将返回HTTP头,其中包括内容长度(也称为文件大小)。这确实需要向服务器发出额外的请求,当生成映像而不是静态地提供映像时,这不是非常有效。我不知道有哪种方法可以始终获得确切的文件大小,但是如

比如:


我想得到logo1w.png文件大小7.3kb

如何实现它?

您不能使用javascript(很抱歉,即使是神奇的jQuery在这里也帮不上忙!)。您需要一个服务器端脚本来获取图像,并计算返回页面的大小


注意-请注意,OP并不拥有谷歌域名

查看此链接:

您可以对图像URL执行HTTP HEAD请求。这将返回HTTP头,其中包括内容长度(也称为文件大小)。这确实需要向服务器发出额外的请求,当生成映像而不是静态地提供映像时,这不是非常有效。

我不知道有哪种方法可以始终获得确切的文件大小,但是如果您愿意跳过一些障碍,您可以:

1) 根据尺寸和文件类型进行估算。由于压缩技术的差异很大,但您可能会运行一些统计数据,并提出一种半合理的启发式方法

2) 在IE中,使用图像的
fileSize
属性。在其他支持Canvas的浏览器中,使用描述的技术获取dataURL,然后进行计算(乘以3/4,因为base64的大小增加了4/3)

编辑


3) 其他人给出的关于获取HTTP头的建议(特别是在Fabien Bernede的回答中链接的问题中详细阐述的建议)非常出色和精确。在某些情况下可能会违反跨域限制,但仍然可能是最一致和有效的方法

$fileSize=strlen(file\u get\u contents($imageSrcTag))//当然,最“一致”和有效的方法是使用服务器端代理来获取图像并对其进行评估!完全正确,值得提问者注意——我只是假设他们有一些限制或兴趣,这意味着他们将纯粹使用JavaScript来完成这项工作。任何可下载的内容都有一定的大小,并且有几种定义良好的方式来检索这些信息。@user326404不在js中我是afraid@redsquare-这是不正确的。var xhr=new XMLHttpRequest();xhr.open('HEAD','',true);xhr.onreadystatechange=function(){if(xhr.readyState==4){if(xhr.status==200){alert('Size in bytes:'+xhr.getResponseHeader('Content-Length');}};xhr.send(空);询问者说javascript。这是什么样的答案?
<img src="http://www.google.com/intl/en_ALL/images/srpr/logo1w.png">