2014-12-06 32 views
0

我知道我可以使用下面的方法保存圖片:如何在下載圖像之前找出圖像的類型?

$input = 'http://images.websnapr.com/?size=size&key=Y64Q44QLt12u&url=http://google.com'; 
$output = 'google.com.jpg'; // << How to save the image with proper extension? 
file_put_contents($output, file_get_contents($input)); 

但是,如果我不知道是什麼的下載圖像的格式?如果它是「PNG」呢?如何在保存之前找出目標圖像的類型?

回答

1

要做的最好的事情就是下載並稍後重命名文件。這樣,你只需要提出一個請求。

但是你可以做的另一件事是做一個HTTP HEAD請求。這將獲得所有的響應標題,包括Content-Type標題,因此您可以在下載文件之前決定是否需要該數據。但是,並非所有服務器都支持HEAD請求。

在任何情況下,嫋嫋就是做最簡單的方法:

$ch = curl_init(); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($ch, CURLOPT_URL, 'http://www.example.com/something'); 
curl_setopt($ch, CURLOPT_NOBODY, true); 
curl_setopt($ch, CURLOPT_HEADER, true); 
$headers = curl_exec($ch); 
+0

這是偉大的,但如果服務器不支持HEAD請求? – Meysam 2014-12-06 15:38:04

+0

@Meysam在這種情況下,您將不得不執行正常的GET請求並取消下載。在那一點上,儘管你可以檢查響應頭文件並獲取類型。你應該做的是先下載數據,然後重命名該文件。 – Brad 2014-12-06 15:55:52

相關問題