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

如果要获取远程图片的大小,一种普遍的做法是先将远程图片的内容获取回来,再用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。

时间: 2024-08-31 13:10:34

php查看请求头信息获取远程图片大小的方法分享_php实例的相关文章

php查看请求头信息获取远程图片大小

 php通过fsockopen方法获取头信息,如果请求的是图片,这里的Content-Length就表示图片的大小 如果要获取远程图片的大小,一种普遍的做法是先将远程图片的内容获取回来,再用strlen计算长度,这种方法需要将图片下载下来,然后才能计算.如果图片很大的话,那么网络传输就要花费不少时间,效率显然低下.笔者提供一个方法来提高效率,主要是利用http的头信息.   当访问网页的时候,服务器会返回请求的头信息,其中Content-Length表示请求的网页内容大小.如果请求的是图片,那么

python获取远程图片大小和尺寸的方法

 这篇文章主要介绍了python获取远程图片大小和尺寸的方法,实例分析了Python中urllib2.urlopen方法及图片操作技巧,需要的朋友可以参考下     本文实例讲述了python获取远程图片大小和尺寸的方法.分享给大家供大家参考.具体分析如下: 这段代码通过urllib2打开远程图片,通过cStringIO读取文件内容,不用保存到磁盘即可读取图片文件的信息 ? 1 2 3 4 5 6 7 8 #!/usr/bin/env python #encoding=utf-8 import

python获取远程图片大小和尺寸的方法_python

本文实例讲述了python获取远程图片大小和尺寸的方法.分享给大家供大家参考.具体分析如下: 这段代码通过urllib2打开远程图片,通过cStringIO读取文件内容,不用保存到磁盘即可读取图片文件的信息 #!/usr/bin/env python #encoding=utf-8 import cStringIO, urllib2, Image url = 'yun_qi_img/logo.gif' file = urllib2.urlopen(url) tmpIm = cStringIO.S

一个PHP的远程图片抓取函数分享_php技巧

复制代码 代码如下: function grabImage($url, $filename = '') { if($url == '') { return false; //如果 $url 为空则返回 false; } $ext_name = strrchr($url, '.'); //获取图片的扩展名 if($ext_name != '.gif' && $ext_name != '.jpg' && $ext_name != '.bmp' && $ext_n

PHP编写的图片验证码类文件分享_php实例

适用于自定义的验证码类! <?php /* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */ Class Image{ private $img; public $width = 85; pub

thinkphp实现图片上传功能分享_php实例

1.我们首先需要创建一个表 复制代码 代码如下: CREATE TABLE IF NOT EXISTS `tp_image` (  `id` int(11) NOT NULL AUTO_INCREMENT,  `image` varchar(200) NOT NULL,  `create_time` int(11) NOT NULL,  PRIMARY KEY (`id`)) ENGINE=MyISAM  DEFAULT CHARSET=utf8; 2.然后再conf文件里添加配置(最后一段配置

用php实现百度网盘图片直链的代码分享_php实例

第一种代码:代码量较少通过正则表达式获取百度网盘的文件真实地址,来实现直链的效果 将下面的代码保存为downbd.php 复制代码 代码如下: <?php $canshu=$_SERVER["QUERY_STRING"]; if($canshu=="") { die("文件不存在"); } else { $wangzhi="http://pan.baidu.com/share/link?".$canshu; $file=

实现获取http内容的php函数分享_php实例

复制代码 代码如下: <?phpfunction http_open($url, $data, $cookie = null, $method = "GET", $timeout = 60) { $options = array(); $options['http']['method'] = $method; $options['http']['user_agent'] = $_SERVER['HTTP_USER_AGENT']; $options['http']['timeou

php获取远程文件大小及信息的函数(header头信息获取)

函数|文件大小|远程文件|header php获取远程文件大小及信息的函数(header头信息获取) 阿里西西Alixixi.com开发团队在做一个客户系统时,需要做远程下载的功能,并实时显示进度条效果. 所以,需要预先读取远程文件的大小信息,然后做为实时下载进度条的参数. 功能函数如下,调用很简单,getFileSize("http://www.alixixi.com/download/xml.rar") ,就可以获取远程文件的大小了. 以下是引用片段:<?php functi