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+Html+缓存
Dec 20 PHP
php str_replace的替换漏洞
Mar 15 PHP
PHP中用正则表达式清除字符串的空白
Jan 17 PHP
PHP实现根据浏览器跳转不同语言页面代码
Aug 02 PHP
关于php微信订阅号开发之token验证后自动发送消息给订阅号但是没有消息返回的问题
Dec 21 PHP
php数据访问之增删改查操作
May 09 PHP
深入理解PHP之源码目录结构与功能说明
Jun 01 PHP
PHP中加速、缓存扩展的区别和作用详解(eAccelerator、memcached、xcache、APC )
Jul 09 PHP
无需数据库在线投票调查php代码
Jul 20 PHP
PHP类型约束用法示例
Sep 28 PHP
Swoole4.4协程抢占式调度器详解
May 23 PHP
PHP命名空间用法实例分析
Sep 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如何将图片文件上传到另外一台服务器上
2019/08/26 PHP
JavaScript 用cloneNode方法克隆节点的代码
2012/10/15 Javascript
js获取location.href的参数实例代码
2013/08/02 Javascript
js导入导出excel(实例代码)
2013/11/25 Javascript
JS替换文本域内的回车示例
2014/02/18 Javascript
nodejs npm package.json中文文档
2014/09/04 NodeJs
小米公司JavaScript面试题
2014/12/29 Javascript
Javascript获取表单名称(name)的方法
2015/04/02 Javascript
详细解读JavaScript的跨浏览器事件处理
2015/08/12 Javascript
利用Angularjs和bootstrap实现购物车功能
2016/08/31 Javascript
微信小程序 教程之引用
2016/10/18 Javascript
jQuery validate 验证radio实例
2017/03/01 Javascript
基于Cookie常用操作以及属性介绍
2017/09/07 Javascript
将jquery.qqFace.js表情转换成微信的字符码
2017/12/01 jQuery
javaScript实现鼠标在文字上悬浮时弹出悬浮层效果
2020/04/12 Javascript
bootstrap table表格插件之服务器端分页实例代码
2018/09/12 Javascript
js实现淘宝首页的banner栏效果
2019/11/26 Javascript
使用python调用浏览器并打开一个网址的例子
2014/06/05 Python
自动化Nginx服务器的反向代理的配置方法
2015/06/28 Python
VSCode Python开发环境配置的详细步骤
2019/02/22 Python
Django框架组成结构、基本概念与文件功能分析
2019/07/30 Python
Win下PyInstaller 安装和使用教程
2019/12/25 Python
PyTorch实现AlexNet示例
2020/01/14 Python
解决Python paramiko 模块远程执行ssh 命令 nohup 不生效的问题
2020/07/14 Python
如何用PyPy让你的Python代码运行得更快
2020/12/02 Python
CSS3伪类选择器:nth-child()
2009/04/02 HTML / CSS
html5的画布canvas——画出简单的矩形、三角形实例代码
2013/06/09 HTML / CSS
单位消防安全制度
2014/01/12 职场文书
小学敬老月活动方案
2014/02/11 职场文书
难忘的一课教学反思
2014/04/30 职场文书
幼儿园教师师德承诺书
2015/04/28 职场文书
乱世佳人观后感
2015/06/08 职场文书
会计岗位工作总结
2015/08/12 职场文书
java设计模式--原型模式详解
2021/07/21 Java/Android
python神经网络学习 使用Keras进行简单分类
2022/05/04 Python
浅谈MySql update会锁定哪些范围的数据
2022/06/25 MySQL