在 Python 中,如何获取文件的content_type或mime_type



可能的重复项:
如何在python中找到文件的mime类型?

我正在使用电子邮件处理 API (sendgrid.com),该 API 将所有传入电子邮件发布到我的应用中的 Web 请求处理程序。附件作为附件0=xyz&附件1=abc以及其他电子邮件字段(如"收件人"抄送"主题"等)发布。

然后,我将这些附件作为文件存储在 BlobStore(使用 App Engine)中。若要将这些文件提供回给用户,必须指定 mime_type/content_type。据我了解,它通常取决于文件类型。但是我不清楚如何从传递的字符串中获取文件类型。

是否有一个库可以从文件的字节内容中找出文件类型?

澄清一下,没有文件名或文件扩展名。只是文件的字节内容。

如果您在上传文件名时保存了文件名,则可以使用mimetypes.guess_type函数在此处试一试。亚历山大的链接SO问题很好读。

不幸的是,这不是你的情况。如果你只有一个二进制 blob,恐怕你必须在这里进行一些自定义启发式。请按照以下简单步骤操作:

  1. 构建已知签名的映射。我马上举个例子。
  2. 从 Blob 中读取前 4 个字节。
  3. 对步骤 1 中构建的地图进行最长匹配。通过最长匹配,我的意思是如果所有 4 个字节都匹配,请接受它,然后尝试使用前 3 个字节、前 2 个字节,最后是前 1 个字节。

例如:

ZIP文件以两个字符开头PK,RAR文件以Rar!开头,PDF以%PDF开头,PNG以x89PNG开头等等

这将无法识别某些文件(例如JPG),但您在这里有一个良好的开端。

或者,您也可以使用 https://github.com/ahupp/python-magic。

相关内容

  • 没有找到相关文章

最新更新