您当前的位置: 首页 > 网站编程 > PHP教程 > php查看请求头信息获取远程图片大小

php查看请求头信息获取远程图片大小

作者:不详 来源:网络 发布时间: 2014-08-14 17:46 点击:
php通过fsockopen方法获取头信息,如果请求的是图片,这里的Content-Length就表示图片的大小 如果要获取远程图片的大小,一种普遍的做法是先将远程图片的内容获取回来,再用strlen计算长度,这种方法需要将图片下载下来,然后才能计算。如果图片很大的话,那么网络传输

php查看请求头信息获取远程图片大小

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

  如果要获取远程图片的大小,一种普遍的做法是先将远程图片的内容获取回来,再用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。
分享到:
本文"php查看请求头信息获取远程图片大小"由远航站长收集整理而来,仅供大家学习与参考使用。更多网站制作教程尽在远航站长站。
顶一下
(0)
0%
踩一下
(0)
0%
[点击 次] [返回上一页] [打印]
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 密码: 验证码:
关于本站 - 联系我们 - 广告合作 - 网站声明 - 友情连接- 网站地图 - 站点地图 - 返回顶部
Copyright © 2007-2013 www.yhzhan.com(远航站长). All Rights Reserved .
远航站长:为中小站长提供最佳的学习与交流平台,提供网页制作与网站编程等各类网站制作教程.
官方QQ:445490277 网站群:26680406 网站备案号:豫ICP备07500620号-4