www.adminn.cn
站长正能量分享网!

php查看请求头信息获取远程图片大小的方法分享

AD:阿里云服务器企业会员更优惠 腾讯云香港,韩国免备案服务器1.8折优惠

php通过fsockopen方法获取头信息,如果请求的是图片,这里的Content-Length就表示图片的大小。

如果要获取远程图片的大小,一种普遍的做法是先将远程图片的内容获取回来,再用strlen计算长度,这种方法需要将图片下载下来,然后才能计算。如果图片很大的话,那么网络传输就要花费不少时间,效率显然低下。笔者提供一个方法来提高效率,主要是利用http的头信息。

当访问网页的时候,服务器会返回请求的头信息,其中Content-Length表示请求的网页内容大小。如果请求的是图片,那么Content-Length就表示图片的大小。根据这个,只需要发送head请求获取返回的头信息就OK了。在php中,可以通过fsockopen方法获取头信息。代码如下:

  1. $fp = fsockopen("www.adminn.cn", 80, $errno$errstr, 30); 
  2.  
  3. if ($fp) { 
  4.     //这里请求设置为HEAD就行了 
  5.     $out = "HEAD /img/baidu_sylogo1.gif HTTP/1.1\r\n"
  6.     $out .= "Host: www.adminn.cn\r\n"
  7.     $out .= "Connection: Close\r\n\r\n"
  8.     fwrite($fp$out); 
  9.     while (!feof($fp)) { 
  10.         $header = fgets($fp); 
  11.         if (stripos($header'Content-Length') !== false) { 
  12.             $size = trim(substr($headerstrpos($header':') + 1)); 
  13.             echo $size
  14.         } 
  15.     } 
  16.     fclose($fp); 
  17. else { 
  18.     echo "$errstr ($errno)"

和发起GET请求一样,只需要将请求类型GET设置为HEAD就可以了。请求的主机和路径,修改成自己需要的就可以了。

小结:php里也可以使用get_headers来获取头信息,不过笔者测试过这个函数,是GET请求,详情参考:php函数get_headers是HEAD请求还是GET请求。

另外有的服务器可能会屏蔽HEAD请求,如果被屏蔽了,就只能老老实实用GET请求了。如果要这样做的话,可以直接用现成的函数getimagesize。

模板优惠价: (点击购买)
版权声明:本文采用知识共享 署名4.0国际许可协议 [BY-NC-SA] 进行授权
文章名称:《php查看请求头信息获取远程图片大小的方法分享》
文章链接:https://www.adminn.cn/news/8476.html
本站资源模板仅供个人学习交流,请于下载后24小时内删除,不允许用于商业用途,否则法律问题自行承担。2021.5月起,网站调整,暂不再分享免费模板。谢谢理解

扫码支付后请联系右侧QQ发送下载地址!!

源码请勿用于任何涉灰站点!净化网络,站长更有责!

支付宝扫一扫打赏