php获取远程文件大小

2024-08-30 09:32
文章标签 php 远程 获取 文件大小

本文主要是介绍php获取远程文件大小,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

来源URL: http://blog.csdn.net/xuxujian/article/details/7237006

获取本地文件大小filesize()就可以了,但是如何获取远程文件的大小呢? 这里介绍三个方法来获取远程文件的大小.

方法1:get_headers

[php] view plain copy
  1. <?php    
  2. get_headers($url,true);    
  3.     
  4. //返回结果    
  5. Array    
  6. (    
  7.     [0] => HTTP/1.1 200 OK    
  8.     [Date] => Sat, 29 May 2004 12:28:14 GMT    
  9.     [Server] => Apache/1.3.27 (Unix)  (Red-Hat/Linux)    
  10.     [Last-Modified] => Wed, 08 Jan 2003 23:11:55 GMT    
  11.     [ETag] => "3f80f-1b6-3e1cb03b"    
  12.     [Accept-Ranges] => bytes    
  13.     [Content-Length] => 438    
  14.     [Connection] => close    
  15.     [Content-Type] => text/html    
  16. )    
  17. ?>    

 

此处可以直接根据Content-Length来获取到远程文件的大小了.

方法2:curl

[php] view plain copy
  1. function remote_filesize($uri,$user='',$pw='')    
  2. {    
  3.     // start output buffering    
  4.     ob_start();    
  5.     // initialize curl with given uri    
  6.     $ch = curl_init($uri);    
  7.     // make sure we get the header    
  8.     curl_setopt($ch, CURLOPT_HEADER, 1);    
  9.     // make it a http HEAD request    
  10.     curl_setopt($ch, CURLOPT_NOBODY, 1);    
  11.     // if auth is needed, do it here    
  12.     if (!emptyempty($user) && !emptyempty($pw))    
  13.     {    
  14.         $headers = array('Authorization: Basic ' . base64_encode($user.':'.$pw));    
  15.         curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);    
  16.     }    
  17.     $okay = curl_exec($ch);    
  18.     curl_close($ch);    
  19.     // get the output buffer    
  20.     $head = ob_get_contents();    
  21.     // clean the output buffer and return to previous    
  22.     // buffer settings    
  23.     ob_end_clean();    
  24.     
  25.     echo '<br>head-->'.$head.'<----end <br>';    
  26.     
  27.     // gets you the numeric value from the Content-Length    
  28.     // field in the http header    
  29.     $regex = '/Content-Length:\s([0-9].+?)\s/';    
  30.     $count = preg_match($regex$head$matches);    
  31.     
  32.     // if there was a Content-Length field, its value    
  33.     // will now be in $matches[1]    
  34.     if (isset($matches[1]))    
  35.     {    
  36.         $size = $matches[1];    
  37.     }    
  38.     else    
  39.     {    
  40.         $size = 'unknown';    
  41.     }    
  42.     //$last=round($size/(1024*1024),3);    
  43.     //return $last.' MB';    
  44.     return $size;    
  45. }    


 

方法3:socket

[php] view plain copy
  1. function getFileSize($url)    
  2. {    
  3.     $url = parse_url($url);    
  4.     if($fp = @fsockopen($url['host'],emptyempty($url['port'])?80:$url['port'],$error))    
  5.     {    
  6.         fputs($fp,"GET ".(emptyempty($url['path'])?'/':$url['path'])." HTTP/1.1\r\n");    
  7.         fputs($fp,"Host:$url[host]\r\n\r\n");    
  8.         while(!feof($fp))    
  9.         {    
  10.             $tmp = fgets($fp);    
  11.             if(trim($tmp) == '')    
  12.             {    
  13.                 break;    
  14.             }    
  15.             elseif(preg_match('/Content-Length:(.*)/si',$tmp,$arr))    
  16.             {    
  17.                 return trim($arr[1]);    
  18.             }    
  19.         }    
  20.         return null;    
  21.     }    
  22.     else    
  23.     {    
  24.         return null;    
  25.     }    
  26. }    


 

方法4:file_get_contents

[php] view plain copy
  1. $fCont = file_get_contents("http://www.mg27.com/1.html");    
  2. echo strlen($fCont)/1024;  

这篇关于php获取远程文件大小的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1120441

相关文章

python获取当前文件和目录路径的方法详解

《python获取当前文件和目录路径的方法详解》:本文主要介绍Python中获取当前文件路径和目录的方法,包括使用__file__关键字、os.path.abspath、os.path.realp... 目录1、获取当前文件路径2、获取当前文件所在目录3、os.path.abspath和os.path.re

Java子线程无法获取Attributes的解决方法(最新推荐)

《Java子线程无法获取Attributes的解决方法(最新推荐)》在Java多线程编程中,子线程无法直接获取主线程设置的Attributes是一个常见问题,本文探讨了这一问题的原因,并提供了两种解决... 目录一、问题原因二、解决方案1. 直接传递数据2. 使用ThreadLocal(适用于线程独立数据)

Python实现局域网远程控制电脑

《Python实现局域网远程控制电脑》这篇文章主要为大家详细介绍了如何利用Python编写一个工具,可以实现远程控制局域网电脑关机,重启,注销等功能,感兴趣的小伙伴可以参考一下... 目录1.简介2. 运行效果3. 1.0版本相关源码服务端server.py客户端client.py4. 2.0版本相关源码1

PHP执行php.exe -v命令报错的解决方案

《PHP执行php.exe-v命令报错的解决方案》:本文主要介绍PHP执行php.exe-v命令报错的解决方案,文中通过图文讲解的非常详细,对大家的学习或工作有一定的帮助,需要的朋友可以参考下... 目录执行phpandroid.exe -v命令报错解决方案执行php.exe -v命令报错-PHP War

Android Environment 获取的路径问题

1. 以获取 /System 路径为例 /*** Return root of the "system" partition holding the core Android OS.* Always present and mounted read-only.*/public static @NonNull File getRootDirectory() {return DIR_ANDR

PHP原理之内存管理中难懂的几个点

PHP的内存管理, 分为俩大部分, 第一部分是PHP自身的内存管理, 这部分主要的内容就是引用计数, 写时复制, 等等面向应用的层面的管理. 而第二部分就是今天我要介绍的, zend_alloc中描写的关于PHP自身的内存管理, 包括它是如何管理可用内存, 如何分配内存等. 另外, 为什么要写这个呢, 因为之前并没有任何资料来介绍PHP内存管理中使用的策略, 数据结构, 或者算法. 而在我们

JS和jQuery获取节点的兄弟,父级,子级元素

原文转自http://blog.csdn.net/duanshuyong/article/details/7562423 先说一下JS的获取方法,其要比JQUERY的方法麻烦很多,后面以JQUERY的方法作对比。 JS的方法会比JQUERY麻烦很多,主要则是因为FF浏览器,FF浏览器会把你的换行也当最DOM元素。 <div id="test"><div></div><div></div

php中json_decode()和json_encode()

1.json_decode() json_decode (PHP 5 >= 5.2.0, PECL json >= 1.2.0) json_decode — 对 JSON 格式的字符串进行编码 说明 mixed json_decode ( string $json [, bool $assoc ] ) 接受一个 JSON 格式的字符串并且把它转换为 PHP 变量 参数 json

如何将文件夹里的PHP代码放到一个文件里

find ./dir -name "*.php" -exec 'cat' {} \; > dir.out

PHP抓取网站图片脚本

方法一: <?phpheader("Content-type:image/jpeg"); class download_image{function read_url($str) { $file=fopen($str,"r");$result = ''; while(!feof($file)) { $result.=fgets($file,9999); } fclose($file); re