加入收藏 | 设为首页 | 会员中心 | 我要投稿 济源站长网 (https://www.0391zz.cn/)- 数据工具、数据仓库、行业智能、CDN、运营!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

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

发布时间:2022-09-16 04:33:16 所属栏目:PHP教程 来源:互联网
导读:php有很多方法可以获取远程文件大小的,最常用的就有fsockopen、file_get_contents、curl函数,下面我来给各位总结一下. 1、fsockopen,代码如下: ?php function getFileSize($url){ $url = parse_url($url); if($fp = @fsockopen($url[host],emptyempty($url[p
  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;  
  }

(编辑:济源站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读