2011-01-13 30 views
4

通常我會把它下載到StringIO對象,然後運行這個:如何使用python-magic通過Internet獲取文件的文件類型?

m = magic.Magic() 
m.from_buffer(thefile.read(1024)) 

但是這一次,我無法下載文件,因爲圖像可能是20兆字節。我想用Python魔法找到文件類型而不下載整個文件

如果python-magic不能這樣做...是觀察標題中MIME類型的下一個最佳方式嗎?但這有多準確?

我需要準確性。

回答

7

你可以叫read(1024),而無需下載整個文件:

thefile = urllib2.urlopen(someURL) 

然後,只需使用現有的代碼。 urlopen返回一個類似文件的對象,所以這個工作很自然。

2

如果它是常見的圖像格式之一像png的JPG格式,並且您看到服務器是可靠的,那麼您可以使用'Content-Type'標題來提供您正在尋找的內容。

但是這不如使用文件的部分並將它傳遞給python-magic更可靠,因爲如果服務器沒有識別出正確的格式並且它可能已經將它設置爲application/octet-stream。這在視頻格式中比較常見,但圖片,我認爲Content-Type沒問題。

對不起,我無法找到關於Content-Type的準確性的任何統計資料或研究。只下載部分文件的建議答案也是一個不錯的選擇。

相關問題