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 相关文章推荐
Zend公司全球首推PHP认证
Oct 09 PHP
PHP语法速查表
Dec 06 PHP
调整优化您的LAMP应用程序的5种简单方法
Jun 26 PHP
PHP语言中global和$GLOBALS[]的分析 之二
Feb 02 PHP
浅谈web上存漏洞及原理分析、防范方法(文件名检测漏洞)
Jun 29 PHP
PHP 获取远程文件大小的3种解决方法
Jul 11 PHP
PHP使用Nginx实现反向代理
Sep 20 PHP
PHP获取星期几的常用方法小结
Dec 18 PHP
PHP封装的分页类与简单用法示例
Feb 25 PHP
PHP SESSION机制的理解与实例
Mar 22 PHP
PHP经典设计模式之依赖注入定义与用法详解
May 21 PHP
php libevent 功能与使用方法详解
Mar 04 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+Html+缓存
2006/11/25 PHP
php实现的太平洋时间和北京时间互转的自定义函数分享
2014/08/19 PHP
学习php设计模式 php实现策略模式(strategy)
2015/12/07 PHP
PHP进阶学习之命名空间基本用法分析
2019/06/18 PHP
让firefox支持IE的一些方法的javascript扩展函数代码
2010/01/02 Javascript
深入解析JavaScript中的变量作用域
2013/12/06 Javascript
js实现的简单radio背景颜色选择器代码
2015/08/18 Javascript
基于javascript实现简单计算器功能
2016/01/03 Javascript
jQuery实现ajax无刷新分页页码控件
2017/02/28 Javascript
Bootstrap Table使用整理(一)
2017/06/09 Javascript
React中如何引入Angular组件详解
2018/08/09 Javascript
NodeJS 实现多语言的示例代码
2018/09/11 NodeJs
el-select数据过多懒加载的解决(loadmore)
2019/05/29 Javascript
VUEX采坑之路之获取不到$store的解决方法
2019/11/08 Javascript
Vue通过getAction的finally来最大程度避免影响主数据呈现问题
2020/04/24 Javascript
DJANGO-ALLAUTH社交用户系统的安装配置
2014/11/18 Python
简单易懂的python环境安装教程
2017/07/13 Python
python中MethodType方法介绍与使用示例
2017/08/03 Python
Python使用matplotlib绘制余弦的散点图示例
2018/03/14 Python
python如何读写csv数据
2018/03/21 Python
python matplotlib实现双Y轴的实例
2019/02/12 Python
python如何获取apk的packagename和activity
2020/01/10 Python
Python中常用的高阶函数实例详解
2020/02/21 Python
canvas实现图片镜像翻转的2种方式
2020/07/22 HTML / CSS
为中国消费者甄选天下优品:网易严选
2016/08/11 全球购物
红色康乃馨酒店:Red Carnation Hotels
2017/06/22 全球购物
中专毕业生自荐信
2013/11/16 职场文书
如何写一份好的自荐信
2014/01/02 职场文书
公司经理聘任书
2014/03/29 职场文书
公司新年寄语
2014/04/04 职场文书
党员反腐倡廉学习心得体会
2015/08/15 职场文书
Python数据清洗工具之Numpy的基本操作
2021/04/22 Python
浅谈PostgreSQL表分区的三种方式
2021/06/29 PostgreSQL
梳理总结Python开发中需要摒弃的18个坏习惯
2022/01/22 Python
海弦WR-800F
2022/04/05 无线电
GTX1660显卡搭配显示器推荐
2022/04/19 数码科技