您好,欢迎访问一九零五行业门户网

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

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;
}
http://www.bkjia.com/phpjc/445618.htmlwww.bkjia.comtruehttp://www.bkjia.com/phpjc/445618.htmltecharticlephp有很多方法可以获取远程文件大小的哦,最常用的就有fsockopen、file_get_contents、curl函数哦,下面我来给各位总结一下。 1、fsockopen 代码如...
其它类似信息

推荐信息