获取本地文件大小filesize()即可。
如何获取远程文件的大小?
本文偏好几种php获取远程文件的大小的方法。
方法1:get_headers
 
复制代码 代码示例:
<?php    
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    
)    
?>   
此处可以直接根据Content-Length来获取到远程文件的大小了.
方法2: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]))    
    {    
        $size = $matches[1];    
    }    
    else    
    {    
        $size = 'unknown';    
    }    
    //$last=round($size/(1024*1024),3);    
    //return $last.' MB';    
    return $size;    
}  
方法3:socket方式
 
复制代码 代码示例:
function getFileSize($url)    
{    
    $url = parse_url($url);    
    if($fp = @fsockopen($url['host'],emptyempty($url['port'])?80:$url['port'],$error))    
    {    
        fputs($fp,"GET ".(emptyempty($url['path'])?'/':$url['path'])." HTTP/1.1rn");    
        fputs($fp,"Host:$url[host]rnrn");    
        while(!feof($fp))    
        {    
            $tmp = fgets($fp);    
            if(trim($tmp) == '')    
            {    
                
break;    
            }    
            elseif(preg_match('/Content-Length:(.*)/si',$tmp,$arr))    
            {    
                return trim($arr[1]);    
            }    
        }    
        return null;    
    }    
    else    
    {    
        return null;    
    }    
}   
方法4:file_get_contents
 
复制代码 代码示例:
$fCont = file_get_contents("http://www.jb200.com/index.html");    
echo strlen($fCont)/1024;   
以上四种方法如何选择呢?可以参照如下标准:
curl > fsock > file_get_contents > getheader