我正在使用电子邮件处理API(sendgrid.com)将所有传入的电子邮件发布到我的应用中的Web请求处理程序。附件发布为attachment0 = xyz& attachment1 = abc以及其他电子邮件字段,如'to''cc''the subject'等...
然后,我将这些附件存储为BlobStore中的文件(使用App Engine)。要将这些文件提供给用户,必须指定mime_type / content_type。据我了解,它通常取决于文件类型。但是我不清楚如何从传递的字符串中获取文件类型。是否有一个库从文件的字节内容中找出文件类型?
只是为了澄清,没有文件名或文件扩展名。只是文件的字节内容。
答案 0 :(得分:3)
如果您在上传时保存了文件名,则可以使用mimetypes.guess_type
功能在此处进行操作。亚历山大关联的SO问题很好阅读。
不幸的是,那不是你的情况。如果您拥有的是二进制blob,我恐怕您必须在此处进行一些自定义启发式操作。请按照以下简单步骤操作:
例如:
ZIP文件以两个字符PK
开头,RAR文件以Rar!
开头,PDF以%PDF
开头,PNG以\x89PNG
开头,等等
这将无法识别某些文件(例如JPG),但您可以在这里建立良好的开端。
或者,您也可以使用https://github.com/ahupp/python-magic。