Programowanie w języku PHP » FAQ

Jak pobrać objętość pliku znajdującego się na innym serwerze

Można posłużyć się funkcją remote_file_size() która zwróci
rozmiar pliku w bajtach. Funkcja nie zadziała na pliku
lokalnym jeśli nie podamy pełnego adresu URL.

<?php
 
  function remote_file_size($fname) {
      $url = parse_url($fname);
      if($fp = @fsockopen($url['host'], 80)) {
          fputs($fp, "HEAD ".$url['path']."?".$url['query']." ".
                     "HTTP/1.0\r\nHost: ".$url['host']."\r\n\r\n");
          if(eregi("200 OK", fgets($fp, 1024))) 
              while(!feof($fp)) $head .= fgets($fp, 1024);  
          fclose($fp);
          if(eregi("Content-Length: ([0-9]+)", $head, $match)) 
              return $match[1];
      } 
      if($fp = @fopen($fname, "rb")) {
          $fsize = 0;
          while($buf = fread($fp, 1024)) $fsize += strlen($buf);
          fclose($fp); 
          return $fsize;
      } 
      return false;
  }
 
?>


Przykład wyświetlenia objętości tego artykułu:

  echo remote_file_size("http://4programmers.net/view_faq.php?id=273");


Do napisania tej pozycji FAQ zainspirował mnie test PHP ze strony
http://www.kedziora.info/testy/?id=17