Heim > php教程 > php手册 > PHP 获取远程文件大小常用方法总结

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

WBOY
Freigeben: 2016-06-13 11:15:35
Original
845 Leute haben es durchsucht

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

1、fsockopen

 代码如下 复制代码

function getFileSize($url){
$url = parse_url($url);
if($fp = @fsockopen($url['host'],empty($url['port'])?80:$url['port'],$error)){
fputs($fp,"GET ".(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.bkjia.comnet/")
?>


2、使用file_get_contents()

 代码如下 复制代码

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

3. 使用get_headers()

 代码如下 复制代码

$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 '
head-->'.$head.' ';
 
    // 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;
}


Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Empfehlungen
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage