如何在Python中找到文件的MIME类型?

假设您想在某处保存一堆文件,例如在BLOB中。 假设您想通过网页提取这些文件,并让客户端自动打开正确的应用程序/查看器。

假设:浏览器找出HTTP响应中mime-type(content-type?)标题使用哪个应用程序/查看器。

基于这种假设,除了文件的字节外,还需要保存MIME类型。

你会如何找到文件的MIME类型? 我目前在Mac上,但这也应该在Windows上工作。

浏览器在将文件发布到网页时是否添加此信息?

有没有一个整洁的python库来查找这些信息? 一个WebService或(甚至更好)一个可下载的数据库?


toivotuo建议的python-magic方法已经过时了。 Python-magic的当前主干位于Github,并且基于那里的自述文件,找到MIME类型,就是这样完成的。

# For MIME types
>>> import magic
>>> mime = magic.Magic(mime=True)
>>> mime.from_file("testdata/test.pdf")
'application/pdf'
>>>

标准库中的mimetypes模块将从文件扩展名中确定/猜测MIME类型。

如果用户正在上传文件,则HTTP帖子将包含文件的MIME类型以及数据。 例如,Django将这些数据作为UploadedFile对象的一个​​属性提供。


比使用mimetypes库更可靠的方法是使用python-magic包。

import magic
m = magic.open(magic.MAGIC_MIME)
m.load()
m.file("/tmp/document.pdf")

这将等同于使用文件(1)。

在Django上,还可以确保MIME类型与UploadedFile.content_type相匹配。

链接地址: http://www.djcxy.com/p/1267.html

上一篇: How to find the mime type of a file in python?

下一篇: The "right" JSON date format