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。

(0)

相关推荐

  • PHP设置头信息及取得返回头信息的方法

    本文实例讲述了PHP设置头信息及取得返回头信息的方法.分享给大家供大家参考,具体如下: 设置请求的头信息,我们可以用header函数,可以用fsockopen,可以用curl等,本文主要讲的是用curl来设置头信息,并取得返回后的头信息. 一.请求方设置自己的头信息,header.php <?php function FormatHeader($url, $myIp = null,$xml = null) { // 解悉url $temp = parse_url($url); $query =

  • PHP获取http请求的头信息实现步骤

    PHP手册提供了现成的函数: getallheaders (PHP 4, PHP 5) getallheaders - Fetch all HTTP request headers 说明 array getallheaders ( void ) Fetches all HTTP headers from the current request. This function is an alias for apache_request_headers(). Please read theapach

  • php header函数的常用http头设置

    //ok header('HTTP/1.1 200 OK'); //设置一个404头: header('HTTP/1.1 404 Not Found'); //设置地址被永久的重定向 header('HTTP/1.1 301 Moved Permanently'); //转到一个新地址 header('Location: http://www.example.org/'); //文件延迟转向: header('Refresh: 10; url=http://www.example.org/');

  • php下通过伪造http头破解防盗链的代码

    伪造referer实例代码,主要用于一些突破防盗链,比如图片,软件等等 这里就直接给出完整的程序吧,具体的应用可以自己修改. 我这里给出的例子是很简单的,其实可以从这个例子中发展出很多的应用.比如隐藏真实的URL地址--嘿嘿,具体的就自己分析去吧 这里新建一个文件file.php.后面的参数就是需要伪造referfer的目标地址吧.如:file.php/http://www.xxx.xxx/xxx.mp3 复制代码 代码如下: <? $url=str_replace('/file.php/','

  • php通过获取头信息判断图片类型的方法

    本文实例讲述了php通过获取头信息判断图片类型的方法.分享给大家供大家参考.具体实现方法如下: $filename = '617.gif' ; function pictype ( $file ) { /*$png_header = "/x89/x50/x4e/x47/x0d/x0a/x1a/x0a"; $jpg_header = "/xff/xd8";*/ $header = file_get_contents ( $file , 0 , NULL , 0 , 5

  • PHP获取短链接跳转后的真实地址和响应头信息的方法

    获取到一个短连接,需要将短连接转换成真实的网址,通过查资料,发现 PHP 提供了一个函数 get_headers() ,可以完成这个任务,先把 头部信息获取到,然后再分析跳转地址即可: 复制代码 代码如下: $url = 'http://t.cn/h5mwx'; $headers = get_headers($url, TRUE); print_r($headers); //输出跳转到的网址 echo $headers['Location']; 附完整数组: 复制代码 代码如下: Array (

  • PHP 使用header函数设置HTTP头的示例解析 表头

    如下所示: 复制代码 代码如下: //定义编码  header( 'Content-Type:text/html;charset=utf-8 '); //Atom  header('Content-type: application/atom+xml'); //CSS  header('Content-type: text/css'); //Javascript  header('Content-type: text/javascript'); //JPEG Image  header('Con

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

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

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

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

  • Python实现获取本地及远程图片大小的方法示例

    本文实例讲述了Python实现获取本地及远程图片大小的方法.分享给大家供大家参考,具体如下: 了解过Pillow的都知道,Pillow是一个非常强大的图片处理器,这篇文章主要记录一下Pillow对图片信息的获取: 安装Pillow pip install pillow 本地图片 # -*- coding:utf-8 -*- #! python2 import os from PIL import Image path = os.path.join(os.getcwd(),"23.png"

  • php的curl携带header请求头信息实现http访问的方法

    导读: curl请求时添加请求头信息可以模拟真人操作,不容易被当成是爬虫机器人(采集),从而可以绕过Incapsula等安全验证机制. 1.首先使用浏览器(示例使用的是火狐浏览器)访问接口网址,使用F12调试,查看请求头信息,如下: 2.实现代码: <?php /** * 开始访问请求 * @param $url * @return bool|string */ function fetch_url($url) { $header = FormatHeader($url); $useragent

  • Django Python 获取请求头信息Content-Range的方法

    request请求头信息的键会加上HTTP_转换成大写存到request.META中 因此你只需要 content_range = request.META['HTTP_CONTENT_RANGE'] 这样就可以获取到Content-Range的信息. django官网的解释: A standard Python dictionary containing all available HTTP headers. Available headers depend on the client and

  • PHP高效获取远程图片尺寸和大小的实现方法

     PHP高效获取远程图片尺寸和大小的实现方法 在这里分享一下自己的心得,希望和大家一起分享技术,如果有什么不足,还请大家指正.写出这篇目的,就是希望大家一起成长,我也相信技术之间没有高低,只有互补,只有分享,才能使彼此更加成长. 实现代码: /** * 获取远程图片的宽高和体积大小 * * @param string $url 远程图片的链接 * @param string $type 获取远程图片资源的方式, 默认为 curl 可选 fread * @param boolean $isGetF

  • php利用curl获取远程图片实现方法

    curl要求php环境支持才行,可以运行phpinfo()函数是否支持,一般要将php.ini中;extension=php_curl.dll前的;去掉,重新启动IIS或者APACHE就可以了. 代码如下: /* *@通过curl方式获取指定的图片到本地 *@ 完整的图片地址 *@ 要存储的文件名 */ function getImg($url = "", $filename = "") { //去除URL连接上面可能的引号 //$url = preg_replac

  • php获取远程图片并下载保存到本地的方法分析

    本文实例讲述了php获取远程图片并下载保存到本地的方法.分享给大家供大家参考,具体如下: 远程图片指的是远端服务器上的数据我们可以通过php的许多函数来读取下载了,这里整理了两个可以自动下载远程图片并下载保存到本地的例子. 例1,可以自动识别图片类型然后进行对应的保存 /* *功能:php完美实现下载远程图片保存到本地 *参数:文件url,保存文件目录,保存文件名称,使用的下载方式 *当保存文件名称为空时则使用远程文件原来的名称 */ function getImage($url,$save_d

  • 使用Feign传递请求头信息(Finchley版本)

    目录 Feign传递请求头信息 实现RequestInterceptor接口 注册配置 Feign调用微服务传递header请求头 Feign传递请求头信息 在我之前的文章服务网关Spring Cloud Zuul中,将用户的登录id放在了请求头中传递给内部服务. 但是当内部服务之间存在feign调用时,那么请求头信息会在feign请求的时候传递吗?不会,请求的头信息和请求参数都不会进行传递. 但是我们可以通过通过实现RequestInterceptor接口,完成对所有的Feign请求,传递请求

  • PHP获取远程图片并保存到本地的方法

    本文实例讲述了PHP获取远程图片并保存到本地的方法.分享给大家供大家参考.具体实现方法如下: <?php function GrabImage($url, $filename = "") { if ($url == ""):return false; endif; //如果$url地址为空,直接退出 if ($filename == "") { //如果没有指定新的文件名 $ext = strrchr($url, "."

随机推荐