PHP 获取远程文件大小常用方法总结
发布时间:2022-09-17 04:28:37 所属栏目:PHP教程 来源:互联网
导读:php有很多方法可以获取远程文件大小的,最常用的就有fsockopen、file_get_contents、curl函数,下面我来给各位总结一下. 1、fsockopen,代码如下: ?php function getFileSize($url){ $url = parse_url($url); if($fp = @fsockopen($url[host],emptyempty($url
php有很多方法可以获取远程文件大小的,最常用的就有fsockopen、file_get_contents、curl函数,下面我来给各位总结一下. 1、fsockopen,代码如下: <?php 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; }else if(preg_match('/Content-Length:(.*)/si',$tmp,$arr)){ return trim($arr[1]); } } return null; }else{ return null; } } //调用方法 echo getFileSize("http://www.phpfensi.com/") ?> 2、使用file_get_contents(),代码如下: <?php $file = file_get_contents($url); echo strlen($file); ?> 3. 使用get_headers(),代码如下: <?php $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 '<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])) { //开源代码phpfensi.com $size = $matches[1]; } else { $size = 'unknown'; } //$last=round($size/(1024*1024),3); //return $last.' MB'; return $size; } (编辑:开发网_郴州站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |