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 相关文章推荐
CI框架自动加载session出现报错的解决办法
Jun 17 PHP
PHP5.3安装Zend Guard Loader图文教程
Sep 29 PHP
CI框架验证码CAPTCHA辅助函数用法实例
Nov 05 PHP
yii2.0之GridView自定义按钮和链接用法
Dec 15 PHP
php实现Linux服务器木马排查及加固功能
Dec 29 PHP
WordPress中登陆后关闭登陆页面及设置用户不可见栏目
Dec 31 PHP
php array_merge_recursive 数组合并
Oct 26 PHP
Yii2框架实现登录、退出及自动登录功能的方法详解
Oct 24 PHP
PHP的RSA加密解密方法以及开发接口使用
Feb 11 PHP
PHP CURL中传递cookie的方法步骤
May 09 PHP
Laravel find in set排序实例
Oct 09 PHP
PHP读取Excel内的图片(phpspreadsheet和PHPExcel扩展库)
Nov 19 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
shopex中集成的站长统计功能的代码简单分析
2011/08/11 PHP
PHP中使用localhost连接Mysql不成功的解决方法
2014/08/20 PHP
php中print(),print_r(),echo()的区别详解
2014/12/01 PHP
phpstorm编辑器乱码问题解决
2014/12/01 PHP
PHP读取PPT文件的方法
2015/12/10 PHP
ThinkPHP框架实现的MySQL数据库备份功能示例
2018/05/24 PHP
jquery ajax传递中文参数乱码问题及解决方法说明
2014/02/07 Javascript
js变量、作用域及内存详解
2014/09/23 Javascript
NodeJS学习笔记之FS文件模块
2015/01/13 NodeJs
AngularJS extend用法详解及实例代码
2016/11/15 Javascript
jquery无法为动态生成的元素添加点击事件的解决方法(推荐)
2016/12/26 Javascript
分析并输出Python代码依赖的库的实现代码
2015/08/09 Python
python 网络编程详解及简单实例
2017/04/25 Python
CentOS下使用yum安装python-pip失败的完美解决方法
2017/08/16 Python
浅谈用VSCode写python的正确姿势
2017/12/16 Python
pytorch中tensor的合并与截取方法
2018/07/26 Python
详细整理python 字符串(str)与列表(list)以及数组(array)之间的转换方法
2019/08/30 Python
Python使用monkey.patch_all()解决协程阻塞问题
2020/04/15 Python
Python selenium使用autoIT上传附件过程详解
2020/05/26 Python
Opencv图像处理:如何判断图片里某个颜色值占的比例
2020/06/03 Python
Django中使用Json返回数据的实现方法
2020/06/03 Python
Jupyter Notebook添加代码自动补全功能的实现
2021/01/07 Python
StubHub希腊:购买体育赛事、音乐会和剧院门票
2019/08/03 全球购物
Edwaybuy西班牙:小米在线商店
2019/12/04 全球购物
武汉瑞得软件笔试题
2015/10/27 面试题
审核会计岗位职责
2013/11/08 职场文书
外贸销售员求职的自我评价
2013/11/23 职场文书
如何写求职信
2014/05/24 职场文书
会计系毕业生求职信
2014/05/28 职场文书
感谢信格式范文
2015/01/22 职场文书
活动经费申请报告
2015/05/15 职场文书
党性教育心得体会(共6篇)
2016/01/21 职场文书
Java使用jmeter进行压力测试
2021/07/09 Java/Android
Python字符串的转义字符
2022/04/07 Python
Sql Server 行数据的某列值想作为字段列显示的方法
2022/04/20 SQL Server
sql注入报错之注入原理实例解析
2022/06/10 MySQL