2013-04-14 53 views
0

如何通過互聯網檢查文件大小?下面的示例是我的代碼不能正常工作PHP通過互聯網檢查文件大小

echo filesize('http://localhost/wordpress-3.1.2.zip'); 
echo filesize('http://www.wordpress.com/wordpress-3.1.2.zip'); 
+2

可能dublicate:http://stackoverflow.com/questions/2602612/php-remote-file-size-without-downloading-file – Peter

+1

你可以檢查'Content-Length'標題,雖然不能保證準確。最穩定的方法是將文件下載到臨時位置的服務器,然後在其上運行'filesize()'。 – nickb

回答

0

試試這個功能

<?php 
    function remotefsize($url) { 
     $sch = parse_url($url, PHP_URL_SCHEME); 
     if (($sch != "http") && ($sch != "https") && ($sch != "ftp") && ($sch != "ftps")) { 
      return false; 
     } 
     if (($sch == "http") || ($sch == "https")) { 
      $headers = get_headers($url, 1); 
      if ((!array_key_exists("Content-Length", $headers))) { return false; } 
      return $headers["Content-Length"]; 
     } 
     if (($sch == "ftp") || ($sch == "ftps")) { 
      $server = parse_url($url, PHP_URL_HOST); 
      $port = parse_url($url, PHP_URL_PORT); 
      $path = parse_url($url, PHP_URL_PATH); 
      $user = parse_url($url, PHP_URL_USER); 
      $pass = parse_url($url, PHP_URL_PASS); 
      if ((!$server) || (!$path)) { return false; } 
      if (!$port) { $port = 21; } 
      if (!$user) { $user = "anonymous"; } 
      if (!$pass) { $pass = "[email protected]"; } 
      switch ($sch) { 
       case "ftp": 
        $ftpid = ftp_connect($server, $port); 
        break; 
       case "ftps": 
        $ftpid = ftp_ssl_connect($server, $port); 
        break; 
      } 
      if (!$ftpid) { return false; } 
      $login = ftp_login($ftpid, $user, $pass); 
      if (!$login) { return false; } 
      $ftpsize = ftp_size($ftpid, $path); 
      ftp_close($ftpid); 
      if ($ftpsize == -1) { return false; } 
      return $ftpsize; 
     } 
    } 
?> 
-1

我認爲這可能是不可能的。最好的方法是通過file_get_contents下載文件,然後在文件上使用filesize。您以後可以刪除該文件!

3

文件大小功能用於獲取本地存儲的文件的大小*對於遠程文件,你必須找到其他的解決方案,例如:

<?php 
function getSizeFile($url) { 
    if (substr($url,0,4)=='http') { 
     $x = array_change_key_case(get_headers($url, 1),CASE_LOWER); 
     if (strcasecmp($x[0], 'HTTP/1.1 200 OK') != 0) { $x = $x['content-length'][1]; } 
     else { $x = $x['content-length']; } 
    } 
    else { $x = @filesize($url); } 

    return $x; 
} 
?> 

來源:請參閱以下鏈接

第一後評論

http://php.net/manual/en/function.filesize.php

*好了,因爲PHP 5還有文件功能的一些包裝,說實話,在這裏看到:

http://www.php.net/manual/en/wrappers.php

你可以找到很多更多的例子,即便是在這裏所以,這應該滿足你的需要:PHP: Remote file size without downloading file

試着問問題,下一次之前,使用搜索功能!