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 代码如...
