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


Posted in PHP onDecember 25, 2013

如果要获取远程图片的大小,一种普遍的做法是先将远程图片的内容获取回来,再用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.1\r\n";
    $out .= "Host: www.baidu.com\r\n";
    $out .= "Connection: Close\r\n\r\n";
    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 相关文章推荐
使用php统计字符串中中英文字符的个数
Jun 23 PHP
解析如何修改phpmyadmin中的默认登陆超时时间
Jun 25 PHP
可以保证单词完整性的PHP英文字符串截取代码分享
Jul 15 PHP
js代码实现微博导航栏
Jul 30 PHP
PHP二维数组矩形转置实例
Jul 20 PHP
PHP函数引用返回的实例详解
Sep 11 PHP
php使用PDO下exec()函数查询执行后受影响行数的方法
Mar 28 PHP
PHP使用finfo_file()函数检测上传图片类型的实现方法
Apr 18 PHP
Yii框架实现多数据库配置和操作的方法
May 25 PHP
php图片裁剪函数
Oct 31 PHP
PHP7数组的底层实现示例
Aug 25 PHP
PHP http请求超时问题解决方案
Nov 13 PHP
php对数组排序的简单实例
Dec 25 #PHP
ubuntu12.04使用c编写php扩展模块教程分享
Dec 25 #PHP
php中apc缓存使用示例
Dec 25 #PHP
php递归获取目录内文件(包含子目录)封装类分享
Dec 25 #PHP
输入值/表单提交参数过滤有效防止sql注入的方法
Dec 25 #PHP
zend framework文件上传功能实例代码
Dec 25 #PHP
php文字水印和php图片水印实现代码(二种加水印方法)
Dec 25 #PHP
You might like
php 日期时间处理函数小结
2009/12/18 PHP
PHP 闭包详解及实例代码
2016/09/28 PHP
php写一个函数,实现扫描并打印出自定目录下(含子目录)所有jpg文件名
2017/05/26 PHP
php简单实现单态设计模式的方法分析
2017/07/28 PHP
PHP接口类(interface)的定义、特点和应用示例
2020/05/18 PHP
基于jquery的表格排序
2010/09/11 Javascript
jquery图片放大镜功能的实例代码
2013/03/26 Javascript
JS 获取滚动条高度示例代码
2013/10/24 Javascript
Extjs4中的分页应用结合前后台
2013/12/13 Javascript
jquery+css3打造一款ajax分页插件(自写)
2014/06/18 Javascript
浅析JavaScript作用域链、执行上下文与闭包
2016/02/01 Javascript
jQuery使用contains过滤器实现精确匹配方法详解
2016/02/25 Javascript
Bootstrap多级导航栏(级联导航)的实现代码
2016/03/08 Javascript
JsonProperty 的使用方法详解
2019/10/11 Javascript
VUE实现图片验证码功能
2020/11/18 Javascript
vue项目中自定义video视频控制条的实现代码
2020/04/26 Javascript
[01:02:25]2014 DOTA2华西杯精英邀请赛 5 24 iG VS DK
2014/05/26 DOTA
手动实现把python项目发布为exe可执行程序过程分享
2014/10/23 Python
python 网络编程常用代码段
2016/08/28 Python
Python中xrange与yield的用法实例分析
2017/12/26 Python
Python实现识别手写数字大纲
2018/01/29 Python
python issubclass 和 isinstance函数
2019/07/25 Python
在django项目中导出数据到excel文件并实现下载的功能
2020/03/13 Python
在Python中字典按值排序的实现方法
2020/11/12 Python
2014年消防工作实施方案
2014/02/20 职场文书
《美丽的黄昏》教学反思
2014/02/28 职场文书
高中生的自我评价
2014/03/04 职场文书
农村结婚典礼司仪主持词
2014/03/14 职场文书
家长学校工作方案
2014/05/07 职场文书
股票投资建议书
2014/05/19 职场文书
乡镇四风对照检查材料
2014/08/31 职场文书
金榜题名主持词
2015/07/02 职场文书
初中地理教学反思
2016/02/19 职场文书
Python基础详解之邮件处理
2021/04/28 Python
springboot临时文件存储目录配置方式
2021/07/01 Java/Android
td 内容自动换行 table表格td设置宽度后文字太多自动换行
2022/12/24 HTML / CSS