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学习之PHP变量
Oct 09 PHP
基于php缓存的详解
May 15 PHP
基于flush()不能按顺序输出时的解决办法
Jun 29 PHP
php实现的支持断点续传的文件下载类
Sep 23 PHP
php使用unset()删除数组中某个单元(键)的方法
Feb 17 PHP
Yii编程开发常见调用技巧集锦
Jul 15 PHP
PHP的Json中文处理解决方案
Sep 29 PHP
php实现的网页版剪刀石头布游戏示例
Nov 25 PHP
php中分页及SqlHelper类用法实例
Jan 12 PHP
PHP用正则匹配form表单中所有元素的类型和属性值实例代码
Feb 28 PHP
php base64 编码与解码实例代码
Mar 21 PHP
PHP的PDO大对象(LOBs)
Jan 27 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
ajax返回值中有回车换行、空格的解决方法分享
2013/10/24 PHP
php使用curl访问https示例分享
2014/01/17 PHP
PHP实现深度优先搜索算法(DFS,Depth First Search)详解
2017/09/16 PHP
jquery中的$(document).ready()使用小结
2014/02/14 Javascript
javascript回车完美实现tab切换功能
2014/03/13 Javascript
JavaScript设计模式之外观模式实例
2014/10/10 Javascript
JS函数this的用法实例分析
2015/02/05 Javascript
js实现下拉框选择要显示图片的方法
2015/02/16 Javascript
jQuery Form 表单提交插件之formSerialize,fieldSerialize,fieldValue,resetForm,clearForm,clearFields的应用
2016/01/23 Javascript
详解Javascript继承的实现
2016/03/25 Javascript
jQuery Mobile和HTML5开发App推广注册页
2016/11/07 Javascript
JS用斜率判断鼠标进入DIV四个方向的方法
2016/11/07 Javascript
gulp加批处理(.bat)实现ng多应用一键自动化构建
2017/02/16 Javascript
js获取一组日期中最近连续的天数
2017/05/25 Javascript
使用命令行工具npm新创建一个vue项目的方法
2017/12/27 Javascript
JQuery选中select组件被选中的值方法
2018/03/08 jQuery
Canvas实现微信红包照片效果
2018/08/21 Javascript
vue 左滑删除功能的示例代码
2019/01/28 Javascript
js实现简易点击切换显示或隐藏
2020/11/29 Javascript
利用 JavaScript 实现并发控制的示例代码
2020/12/31 Javascript
python中print的不换行即时输出的快速解决方法
2016/07/20 Python
Django实现快速分页的方法实例
2017/10/22 Python
Python获取系统所有进程PID及进程名称的方法示例
2018/05/24 Python
python requests证书问题解决
2019/09/05 Python
python 如何使用find和find_all爬虫、找文本的实现
2020/10/16 Python
美国精品家居用品网站:US-Mattress
2016/08/24 全球购物
销售文员岗位职责
2013/11/29 职场文书
施工人员岗位职责
2013/12/12 职场文书
大学生的创业计划书就该这么写
2014/01/30 职场文书
电厂职工自我鉴定
2014/02/20 职场文书
创业女性典型材料
2014/05/02 职场文书
演讲比赛的活动方案
2014/08/28 职场文书
HTML+CSS 实现顶部导航栏菜单制作
2021/06/03 HTML / CSS
Apache Hudi集成Spark SQL操作hide表
2022/03/31 Servers
Python中使用Opencv开发停车位计数器功能
2022/04/04 Python
Win10本地连接不见了怎么恢复? win10系统电脑本地连接不见了解决方法
2023/01/09 数码科技