php查看请求头信息获取远程图片大小的方法分享
如果要获取远程图片的大小,一种普遍的做法是先将远程图片的内容获取回来,再用strlen计算长度,这种方法需要将图片下载下来,然后才能计算。如果图片很大的话,那么网络传输就要花费不少时间,效率显然低下。笔者提供一个方法来提高效率,主要是利用http的头信息。 当访问网页的时候,服务器会返回请求的头信息,其中Content-Length表示请求的网页内容大小。如果请求的是图片,那么Content-Length就表示图片的大小。根据这个,只需要发送head请求获取返回的头信息就OK了。在php中,可以通过fsockopen方法获取头信息。代码如下: 代码如下: $fp = fsockopen("www.baidu.com",80,$errno,$errstr,30);
if ($fp) { //这里请求设置为HEAD就行了 $out = "HEAD /img/baidu_sylogo1.gif HTTP/1.1rn"; $out .= "Host: www.baidu.comrn"; $out .= "Connection: Closernrn"; fwrite($fp,$out); while (!feof($fp)) { $header = fgets($fp); if (stripos($header,'Content-Length') !== false) { $size = trim(substr($header,strpos($header,':') + 1)); echo $size; } } fclose($fp); } else { echo "$errstr ($errno)"; } 和发起GET请求一样,只需要将请求类型GET设置为HEAD就可以了。请求的主机和路径,修改成自己需要的就可以了。 小结: php里也可以使用get_headers来获取头信息,不过笔者测试过这个函数,是GET请求,详情参考:php函数get_headers是HEAD请求还是GET请求。 另外有的服务器可能会屏蔽HEAD请求,如果被屏蔽了,就只能老老实实用GET请求了。如果要这样做的话,可以直接用现成的函数getimagesize。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |