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下一个非常全面获取图象信息的函数
Nov 20 PHP
PHP校验ISBN码的函数代码
Jan 17 PHP
让PHP以ROOT权限执行系统命令的方法
Feb 10 PHP
怎样给PHP源代码加密?PHP二进制加密与解密的解决办法
Apr 22 PHP
Youku 视频绝对地址获取的方法详解
Jun 26 PHP
php通过asort()给关联数组按照值排序的方法
Mar 18 PHP
PHP面向对象程序设计之类与反射API详解
Dec 02 PHP
PHP实现限制IP访问及提交次数的方法详解
Jul 17 PHP
php curl操作API接口类完整示例
May 21 PHP
laravel 获取某个查询的查询SQL语句方法
Oct 12 PHP
再谈Yii Framework框架中的事件event原理与应用
Apr 07 PHP
php 防护xss,PHP的防御XSS注入的终极解决方案
Apr 01 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版)
2006/10/09 PHP
收集的php编写大型网站问题集
2007/03/06 PHP
浅析memcache启动以及telnet命令详解
2013/06/28 PHP
php数组转换js数组操作及json_encode的用法详解
2013/10/26 PHP
php采用session实现防止页面重复刷新
2015/12/24 PHP
Laravel实现构造函数自动依赖注入的方法
2016/03/16 PHP
php与python实现的线程池多线程爬虫功能示例
2016/10/12 PHP
Jquery下的26个实用小技巧(jQuery tips, tricks & solutions)
2010/03/01 Javascript
ASP.NET jQuery 实例13 原创jQuery文本框字符限制插件-TextArea Counter
2012/02/03 Javascript
根据邮箱的域名跳转到相应的登录页面的代码
2012/02/27 Javascript
javascript放大镜效果的简单实现
2013/12/09 Javascript
JS实现根据当前文字选择返回被选中的文字
2014/05/21 Javascript
详解百度百科目录导航树小插件
2017/01/08 Javascript
JS使用插件cryptojs进行加密解密数据实例
2017/05/11 Javascript
Nodejs中的require函数的具体使用方法
2019/04/02 NodeJs
JS判断数组里是否有重复元素的方法小结
2019/05/21 Javascript
Vue项目使用localStorage+Vuex保存用户登录信息
2019/05/27 Javascript
vue 使用async写数字动态加载效果案例
2020/07/18 Javascript
python创建线程示例
2014/05/06 Python
python迭代器实例简析
2014/09/25 Python
详解用Python实现自动化监控远程服务器
2019/05/18 Python
pytorch 在sequential中使用view来reshape的例子
2019/08/20 Python
Django后台管理系统的图文使用教学
2020/01/20 Python
Python: tkinter窗口屏幕居中,设置窗口最大,最小尺寸实例
2020/03/04 Python
Python %r和%s区别代码实例解析
2020/04/03 Python
用CSS3实现Win8风格的方格导航菜单效果
2013/04/10 HTML / CSS
加拿大服装和鞋类零售商:Mark’s
2021/01/04 全球购物
法警的竞聘演讲稿
2014/01/02 职场文书
职业培训师职业生涯规划
2014/02/18 职场文书
交通事故私了协议书
2014/04/16 职场文书
2015年幼儿园后勤工作总结
2015/04/25 职场文书
余世维讲座观后感
2015/06/11 职场文书
Python-typing: 类型标注与支持 Any类型详解
2021/05/10 Python
Nginx反向代理配置的全过程记录
2021/06/22 Servers
python入门学习关于for else的特殊特性讲解
2021/11/20 Python
Python经常使用的一些内置函数
2022/04/11 Python