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 UTF8 文件的签名问题
Oct 30 PHP
PHP日期处理函数 整型日期格式
Jan 12 PHP
php判断上传的Excel文件中是否有图片及PHPExcel库认识
Jan 11 PHP
ThinkPHP中的三大自动简介
Aug 22 PHP
cakephp打印sql语句的方法
Feb 13 PHP
Symfony2学习笔记之插件格式分析
Mar 17 PHP
PHP GD库相关图像生成和处理函数小结
Sep 30 PHP
CI框架(CodeIgniter)操作redis的方法详解
Jan 25 PHP
php+ajax实现无刷新文件上传功能(ajaxuploadfile)
Feb 11 PHP
ThinkPHP框架获取最后一次执行SQL语句及变量调试简单操作示例
Jun 13 PHP
详解PHP 7.4 中数组延展操作符语法知识点
Jul 19 PHP
Yii框架组件的事件机制原理与用法分析
Apr 07 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
在IIS上安装PHP4.0正式版
2006/10/09 PHP
php学习之 认清变量的作用范围
2010/01/26 PHP
php 文件上传类代码
2011/08/06 PHP
PHP无限分类(树形类)
2013/09/28 PHP
PHP获取当前日期及本周一是几月几号的方法
2017/03/28 PHP
PHP使用pdo实现事务处理操作示例
2018/09/05 PHP
分页栏的web标准实现
2011/11/01 Javascript
通过jQuery源码学习javascript(二)
2012/12/27 Javascript
javascript实现文字图片上下滚动的具体实例
2013/06/28 Javascript
javascript性能优化之DOM交互操作实例分析
2015/12/12 Javascript
基于jQuery下拉选择框插件支持单选多选功能代码
2016/06/07 Javascript
JS操作JSON方法总结(推荐)
2016/06/14 Javascript
javascript类型系统_正则表达式RegExp类型详解
2016/06/24 Javascript
Javascript学习之谈谈JS的全局变量跟局部变量(推荐)
2016/08/28 Javascript
深入探讨Vue.js组件和组件通信
2016/09/12 Javascript
javascript 产生随机数的几种方法总结
2017/09/26 Javascript
深入理解vue中slot与slot-scope的具体使用
2018/01/26 Javascript
JavaScript实现获取select下拉框中第一个值的方法
2018/02/06 Javascript
详解CommonJS和ES6模块循环加载处理的区别
2018/12/26 Javascript
vue + elementUI实现省市县三级联动的方法示例
2019/10/29 Javascript
JS实现transform实现扇子效果
2020/01/17 Javascript
Python可变参数用法实例分析
2017/04/02 Python
Python爬取商家联系电话以及各种数据的方法
2018/11/10 Python
python 计算一个字符串中所有数字的和实例
2019/06/11 Python
python切片(获取一个子列表(数组))详解
2019/08/09 Python
div或img图片高度随宽度自适应的方法
2020/02/06 HTML / CSS
美国在线宠物商店:Chewy
2019/01/12 全球购物
大四自我鉴定范文
2013/10/06 职场文书
《我的伯父鲁迅先生》教学反思
2014/02/12 职场文书
酒店管理专业毕业生求职自荐信
2014/04/28 职场文书
小学数学教学经验交流材料
2014/05/22 职场文书
汉语言文学专业求职信
2014/06/19 职场文书
面试感谢信范文
2015/01/22 职场文书
放弃遗产继承公证书
2015/01/26 职场文书
烛光里的微笑观后感
2015/06/17 职场文书
导游词之香港-太平山顶
2019/10/18 职场文书