php查看请求头信息获取远程图片大小的方法分享

2015-01-24信息快讯网

php通过fsockopen方法获取头信息,如果请求的是图片,这里的Content-Length就表示图片的大小

如果要获取远程图片的大小,一种普遍的做法是先将远程图片的内容获取回来,再用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获取MySql新增记录ID值的3种方法
Yii Framework框架获取分类下面的所有子类方法
php获取网页中图片、DIV内容的简单方法
PHP采集类Snoopy抓取图片实例
PHP获取文件的MD5值并判断是否被修改的例子
php获取网页请求状态程序示例
php+ajax实现图片文件上传功能实例
Yii结合CKEditor实现图片上传功能
Codeigniter上传图片出现“You did not select a file to upload”错误解决办法
php表单请求获得数据求和示例
php发送post请求函数分享
php处理restful请求的路由类分享
php发送post请求的三种方法
php缩小png图片不损失透明色的解决方法
php对数组排序的简单实例
php递归获取目录内文件(包含子目录)封装类分享
php文字水印和php图片水印实现代码(二种加水印方法)
使用gd库实现php服务端图片裁剪和生成缩略图功能分享
php实现图片缩放功能类
解决file_get_contents无法请求https连接的方法
php获取301跳转URL简单实例
PHP获取MAC地址的具体实例
PHP 提取图片img标记中的任意属性的简单实例
php调整gif动画图片尺寸示例代码分享
PHP根据IP地址获取所在城市具体实现
PHP获取当前url的具体方法全面解析
php curl模拟post请求小实例
php合并js请求的例子
php漏洞之跨网站请求伪造与防止伪造方法
php中如何判断一个网页请求是ajax请求还是普通请求
PHP获取http请求的头信息实现步骤
©2014-2024 dbsqp.com