2011-01-13 55 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的准确性的任何统计资料或研究。只下载部分文件的建议答案也是一个不错的选择。

相关问题