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 相关文章推荐
使用 php4 加速 web 传输
Oct 09 PHP
小偷PHP+Html+缓存
Nov 25 PHP
php.ini中date.timezone设置分析
Jul 29 PHP
PHP防CC攻击实现代码
Dec 29 PHP
PHP设计模式之装饰者模式
Feb 29 PHP
深入PHP许愿墙模块功能分析
Jun 25 PHP
PHP中feof()函数实例测试
Aug 23 PHP
php原生导出excel文件的两种方法(推荐)
Nov 19 PHP
php获取linux命令结果的实例
Mar 13 PHP
phpstudy2018升级MySQL5.5为5.7教程(图文)
Oct 24 PHP
yii框架使用分页的方法分析
Jul 25 PHP
php+laravel 扫码二维码签到功能
May 15 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
js和php邮箱地址验证的实现方法
2014/01/09 PHP
PHP中error_reporting()用法详解
2015/08/31 PHP
thinkPHP框架整合tcpdf插件操作示例
2018/08/07 PHP
PHP array_shift()用法实例分析
2019/01/07 PHP
可在线编辑网页文字效果代码(单击)
2013/03/02 Javascript
javascript按位非运算符的使用方法
2013/11/14 Javascript
jquery 获取dom固定元素 添加样式的简单实例
2014/02/04 Javascript
把文本中的URL地址转换为可点击链接的JavaScript、PHP自定义函数
2014/07/29 Javascript
Bootstrap Table服务器分页与在线编辑应用总结
2016/08/08 Javascript
JavaScript实战(原生range和自定义特效)简单实例
2016/08/21 Javascript
微信小程序开发(二)图片上传+服务端接收详解
2017/01/11 Javascript
jQuery实现一个简单的轮播图
2017/02/19 Javascript
AngularJS 异步解决实现方法
2017/06/12 Javascript
JS实现二维数组横纵列转置的方法
2018/04/17 Javascript
vue.js使用v-if实现显示与隐藏功能示例
2018/07/06 Javascript
详解React 条件渲染
2020/07/08 Javascript
简介JavaScript错误处理机制
2020/08/04 Javascript
Express 配置HTML页面访问的实现
2020/11/01 Javascript
python基于itchat实现微信群消息同步机器人
2017/02/27 Python
Python 多维List创建的问题小结
2019/01/18 Python
解决Django生产环境无法加载静态文件问题的解决
2019/04/23 Python
Python利用myqr库创建自己的二维码
2020/11/24 Python
CSS3实现任意图片lowpoly动画效果实例
2017/05/11 HTML / CSS
详解Sticky Footer 绝对底部的两种套路
2017/11/03 HTML / CSS
异步传递消息系统的作用
2016/05/01 面试题
小学毕业家长寄语
2014/01/19 职场文书
幼儿园大班毕业教师寄语
2014/04/03 职场文书
出生公证书样本
2014/04/04 职场文书
《春笋》教学反思
2014/04/15 职场文书
南京青奥会口号
2014/06/12 职场文书
党的群众路线教育实践活动学习计划
2014/11/03 职场文书
孕妇离婚协议书范本
2014/11/20 职场文书
青年文明号汇报材料
2014/12/23 职场文书
运动会广播稿300字
2015/08/19 职场文书
Django debug为True时,css加载失败的解决方案
2021/04/24 Python
Python之基础函数案例详解
2021/08/30 Python