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生成UTF8文件的方法
May 15 PHP
php $_SERVER["REQUEST_URI"]获取值的通用解决方法
Jun 21 PHP
解析mysql中UNIX_TIMESTAMP()函数与php中time()函数的区别
Jun 24 PHP
非常实用的php弹出错误警告函数扩展性强
Jan 17 PHP
一组PHP可逆加密解密算法实例代码
Jan 21 PHP
php实现mysql封装类示例
May 07 PHP
新浪SAE云平台下使用codeigniter的数据库配置
Jun 12 PHP
php实现通用的信用卡验证类
Mar 24 PHP
Yii实现显示静态页的方法
Apr 25 PHP
php表单加入Token防止重复提交的方法分析
Oct 10 PHP
php 查找数组元素提高效率的方法详解
May 05 PHP
解决laravel id非自增 模型取回为0 的问题
Oct 11 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开发环境配置(MySQL数据库安装图文教程)
2010/04/28 PHP
Thinkphp使用mongodb数据库实现多条件查询方法
2014/06/26 PHP
PHP中常见的缓存技术实例分析
2015/09/23 PHP
php 基础函数
2017/02/10 PHP
PHP使用PHPExcel实现批量上传到数据库的方法
2017/06/08 PHP
mapper--图片热点区域高亮组件官方站点
2007/12/22 Javascript
基于jquery的direction图片渐变动画效果
2010/05/24 Javascript
兼容IE和Firefox的javascript获取iframe文档内容的函数
2011/08/15 Javascript
jQuery 属性选择器element[herf*='value']使用示例
2013/10/20 Javascript
js格式化时间和js格式化时间戳示例
2014/02/10 Javascript
jQuery判断元素是否存在的可靠方法
2014/05/06 Javascript
jquery仿百度经验滑动切换浏览效果
2015/04/14 Javascript
javascript搜索框效果实现方法
2015/05/14 Javascript
Jquery中基本选择器用法实例详解
2015/05/18 Javascript
JavaSciprt中处理字符串之sup()方法的使用教程
2015/06/08 Javascript
针对初学者的jQuery入门指南
2015/08/15 Javascript
理解javascript中的MVC模式
2016/01/28 Javascript
jQuery layui常用方法介绍
2016/07/25 Javascript
Google 地图控件集详解及实例代码
2016/08/06 Javascript
jQuery EasyUI编辑DataGrid用combobox实现多级联动
2016/08/29 Javascript
Vue框架中正确引入JS库的方法介绍
2017/07/30 Javascript
javascript和php使用ajax通信传递JSON的实例
2018/08/21 Javascript
微信小程序实现一个简单swiper代码实例
2019/12/30 Javascript
TensorFlow 合并/连接数组的方法
2018/07/27 Python
解决Python plt.savefig 保存图片时一片空白的问题
2019/01/10 Python
Python简单处理坐标排序问题示例
2019/07/11 Python
python getpass实现密文实例详解
2019/09/24 Python
基于python解线性矩阵方程(numpy中的matrix类)
2019/10/21 Python
python GUI库图形界面开发之PyQt5布局控件QHBoxLayout详细使用方法与实例
2020/03/06 Python
python中绕过反爬虫的方法总结
2020/11/25 Python
全球知名巧克力品牌:Godiva
2016/07/22 全球购物
英国领先的野生鸟类食品供应商:GardenBird
2018/08/09 全球购物
2014年党风建设工作总结
2014/11/19 职场文书
儿子满月酒致辞
2015/07/29 职场文书
如何理解python接口自动化之logging日志模块
2021/06/15 Python
Python 快速验证代理IP是否有效的方法实现
2021/07/15 Python