2010-09-27 87 views
7

我一直在谷歌,但我得到的是getimagesize和文件大小。
getimagesize dosent獲取KB大小隻是寬度和高度,這不是我所期待的。
文件大小給我留言警告:文件大小()[function.filesize]:統計失敗
有問題的文件是51KB .jpg文件PHP獲得圖像的KB大小

$imgsize=filesize("http://localhost/projects/site/schwe/user/1/1.jpg"); 

不起作用,

我該如何做到這一點?

+0

哪個版本的PHP您使用的? – pascal 2010-09-27 15:26:25

+0

也許看到[這個問題](http://stackoverflow.com/questions/2203679/php-filesize-works-on-all-but-one-file-gives-stat-failed-error) – pascal 2010-09-27 15:31:47

回答

7

無法獲取遠程元素的文件大小,或者在系統上給出相對路徑,或者先執行file_get_contents()以獲取內容優先 。因此,而不是http://,做一個filesize('/path/to/local/system')。確保它可以通過php程序讀取

+0

是啊,真的,我只是注意到,謝謝。我應該事先想到它,即時通訊這樣一個白癡。 – Macao 2010-09-27 15:25:33

+0

[PHP.net上的'filesize()'文檔](http://php.net/manual/en/function.filesize.php)中的提示怎麼樣?它說:「從PHP 5.0.0開始,此函數也可以用於一些URL包裝器。請參閱支持的協議和包裝器,以確定哪些包裝器支持stat()系列功能」。看來,你**可以**使用'filesize()'遠程元素。你只需要正確配置你的服務器和PHP解析器(安全問題)。 – trejder 2013-09-17 09:20:31

4

你不能像這樣查找遠程文件的文件大小。這是爲了查看本地文件的文件大小。

例如...

$imgsize = filesize('/home/projects/site/1.jpg'); 
+0

查看我對Stewie的回答的評論。如果只有您的環境和服務器配置正確,您**可以**使用文件大小作爲遠程文件。 – trejder 2013-09-17 09:21:34

0

filesize需要的文件名作爲參數不是一個URL,它返回字節文件的大小。您可以將返回值除以1024以獲得KB的大小。

+0

查看我對Stewie的回答的評論。如果只有您的環境和服務器配置正確,您**可以**使用文件大小作爲遠程文件。 – trejder 2013-09-17 09:22:06

1

filesize()是使用的功能。它可能會失敗,因爲

  1. 你正在試圖獲得一個網址URL &包裝可能無法在
  2. 打開該網址是無效的。

如果您嘗試在本地文件上運行filesize(),請參考文件系統路徑,而不是某個網址。

0

我有同樣的問題,我解決這個問題。我不知道它是多麼最優的,但它爲我工作:

getimagesize("http://localhost/projects/site/schwe/user/1/1.jpg"); 

$file_size = $file[0]*$file[1]*$file["bits"]; 
+0

如果filesize()不適用於HTTP資源,則getimagesize()也會失敗。通過乘以未壓縮的圖像屬性來計算文件大小也會導致錯誤的結果。 – Sven 2012-10-03 18:25:57

1

或者你也可以這樣做:

$header = get_headers($url); 
foreach ($header as $head) { 
    if (preg_match('/Content-Length: /', $head)) { 
     $size = substr($head, 15);      
    } 
}