2012-05-07 48 views

回答

2

來源:https://stackoverflow.com/a/3894706/187954

<?php 
$headers = get_headers('http://humus101.com/wp-content/uploads/2009/11/Hummus-soup.jpg'); 
$size = null; 
foreach($headers as $h){ 
    /** look for Content-Length, and stick it in $size **/ 
} 
if ($size === null){ //we didn't get a Content-Length header 
    /** Grab file to local disk and use filesize() to set $size **/ 
} 

echo "image is $size bytes"; 
+0

謝謝!如果它是1mb(即1024 * 1024),那麼我認爲$ size的值將是1048576? – weltschmerz

+0

哦,我剛纔看到$ size是一個具有圖像高度和寬度的數組,但不是以字節爲單位的大小。有誰知道如何得到那個? – weltschmerz

+0

@ Dennis大約在同一時間我注意到:)參考另一個SO回答更新了我的答案 –

1

我要提到這個職位,我認爲它會回答你的問題。 Easiest way to grab filesize of remote file in PHP?

有兩種方法(我知道)。一種是使用CURL並只提取標題(效率更高,不太可靠),並且file_get_contents (more reliable, less efficient)

使用CURL你可以得到只是CONTENT_LENGTH標題這是文件大小。然後,你可以從那裏做簡單的數學,看看它是否超過1MB。問題在於遠程服務器可能不支持該功能。

通過使用strlen(file_get_contents("YOUR URL"))您可以在文件中獲得總共的腳本,但腳本必須首先下載該文件,如果它是大圖像,則會出現問題。

要檢查文件類型,您可以使用substr來檢查文件擴展名。

像這樣的事情可以工作,但有自己的問題

$ext = substr($URL, -3, 3); 

if($ext == 'jpg' || $ext == 'gif') { 
    //is image 
}else{ 
    //not image 
} 
+0

邁克爾的方法比我的方法更好 –

+0

謝謝!我想我找到了一個更清潔的解決方案。請參閱問題編輯。 – weltschmerz