好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

PHP 获取远程文件大小常用方法总结 - php文件操作

PHP 获取远程文件大小常用方法总结

php有很多方法可以获取远程文件大小的,最常用的就有fsockopen、file_get_contents、curl函数,下面我来给各位总结一下.

1、fsockopen,代码如下:

<?php   function  getFileSize( $url ){   $url  =  parse_url ( $url );   if ( $fp  = @ fsockopen ( $url [ 'host' ], empty empty ( $url [ 'port' ])?80: $url [ 'port' ], $error )){   fputs ( $fp , "GET " .( empty empty ( $url [ 'path' ])? '/' : $url [ 'path' ]). " HTTP/1.1rn" );   fputs ( $fp , "Host:$url[host]rnrn" );   while (! feof ( $fp )){   $tmp  =  fgets ( $fp );   if (trim( $tmp ) ==  '' ){   break ;   } else   if (preg_match( '/Content-Length:(.*)/si' , $tmp , $arr )){   return  trim( $arr [1]);   }   }   return  null;   } else {   return  null;   }   }   //调用方法   echo  getFileSize( "http://www.phpfensi.com/" )   ?> 

2、使用file_get_contents(),代码如下:

<?php  $file  =  file_get_contents ( $url );  echo   strlen ( $file );  ?> 

3. 使用get_headers(),代码如下:

<?php  $header_array  = get_headers( $url , true);    //返回结果    Array   (       [0] => HTTP/1.1 200 OK       [ Date ] => Sat, 29 May 2004 12:28:14 GMT       [Server] => Apache/1.3.27 (Unix)  (Red-Hat/Linux)       [Last-Modified] => Wed, 08 Jan 2003 23:11:55 GMT       [ETag] =>  "3f80f-1b6-3e1cb03b"        [Accept-Ranges] => bytes       [Content-Length] => 438       [Connection] => close       [Content-Type] => text/html   )     $size  =  $header_array [ 'Content-Length' ];  echo   $size ;  ?> 

4.curl,代码如下:

function  remote_filesize( $uri , $user = '' , $pw = '' )   {        // start output buffering        ob_start();        // initialize curl with given uri         $ch  = curl_init( $uri );        // make sure we get the header        curl_setopt( $ch , CURLOPT_HEADER, 1);        // make it a http HEAD request        curl_setopt( $ch , CURLOPT_NOBODY, 1);        // if auth is needed, do it here         if  (!emptyempty( $user ) && !emptyempty( $pw ))       {            $headers  =  array ( 'Authorization: Basic '  .  base64_encode ( $user . ':' . $pw ));           curl_setopt( $ch , CURLOPT_HTTPHEADER,  $headers );       }        $okay  = curl_exec( $ch );       curl_close( $ch );        // get the output buffer         $head  = ob_get_contents();        // clean the output buffer and return to previous         // buffer settings        ob_end_clean();          echo   '<br>head-->' . $head . '<----end <br>' ;          // gets you the numeric value from the Content-Length         // field in the http header         $regex  =  '/Content-Length:s([0-9].+?)s/' ;        $count  = preg_match( $regex ,  $head ,  $matches );          // if there was a Content-Length field, its value         // will now be in $matches[1]         if  (isset( $matches [1]))       {  //开源代码phpfensi.com            $size  =  $matches [1];       }        else        {            $size  =  'unknown' ;       }        //$last=round($size/(1024*1024),3);         //return $last.' MB';         return   $size ;   }

查看更多关于PHP 获取远程文件大小常用方法总结 - php文件操作的详细内容...

  阅读:82次