用PHP 获取远程文件是发现一个问题。当获取 几兆大小文件时没问题。但如果文件超过好几百兆时就会出现超时或假死现象。难道通过PHP就不能获取远程大文件的大小码?哪位大虾有获取远程大文件大小的方法吗?
比如我想获得:ftp://dygod1:[email protected]:2063/xxx.rmvb
qvodsou.cc 这个网站也时通过采集获得的数据。但原网站没有显示文件大小。它的却能获取到文件大小。请问时怎样做到的呢?【通过观察,其网站用得语言是PHP或JAVA 】
比如我想获得:ftp://dygod1:[email protected]:2063/xxx.rmvb
qvodsou.cc 这个网站也时通过采集获得的数据。但原网站没有显示文件大小。它的却能获取到文件大小。请问时怎样做到的呢?【通过观察,其网站用得语言是PHP或JAVA 】
本函数通过header头信息获取远程文件大小,代码如下:
<?php
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.1\r\n");
fputs($fp,"Host:$url[host]\r\n\r\n");
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;
}
}
?>
调用方法很简单,代码如下:
<?php
echo getFileSize("/Article/UploadFiles/201001/20100104122349734.gif")
?>
此函数获取远程文件大小的效果非常好,无论远程文件体积有多大,获取速度完全不受影响。
本文来源网页吧http://www.wangyeba.com
你这个很好用。。我测试了一个1GB的文件 。很快。但为什么无法获取FTP文件呢 。。想电影天堂的文件就是无法获取的 0 0还有其他的方法码》
以前 我也用的 获取文件信息 。。 有可能我是直接测试的 FTP文件。qq914111374 的方法也只能获得 http的文件 。如果我用他获取电影天堂FTP 的文件信息时也会出现假死。。会不会是协议不一样的原因还是。。?
echo getFileSize("/Article/UploadFiles/201001/20100104122349734.gif")
?>
括号里参数是什么呀!!本地文件路径还是 远程文件路径呀
我需要的远程FTP文件的大小 ftp://dygod1:[email protected]:2063/xxx.rmvb
就像这样的 。他们都是有 账号和密码 的 ^_^
header("content-type:text/html;charset=gbk");
$username = 'xxxx';//ftp帐号
$password = 'xxxx';//ftp密码
$url = 'xxx.xxx.xxx/xx.xxx'; //ftp服务器地址+文件路径+文件名例如: ftp.t35.com/down.zip
$ftp_server = "ftp://" . $username . ":" . $password . "@" . $url;
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $ftp_server);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_NOBODY, 1); $output = curl_exec($ch);
curl_close($ch);
//echo $output ;
preg_match('/Content-Length: (\d+)/i',$output,$arr);
echo '文件长度:'.$arr[1] ;