如何从 python 中的 base64 编码数据中知道文件的 MIME 类型?
How to know MIME-type of a file from base64 encoded data in python?
我有一个文件的 base64 编码字符串。
encoded_data = '/9j/4AAQSkZJRgABAQEASABIAAD//gA7Q1JFQVRPUjogZ2QtanBlZyB2MS4wICh1c2luZyBJSkcgSlBFRyB2NjIpLCBxdWFsaXR5ID0gOTUK/9sAQwAGBAUGBQQGBgUGBwcGCAoQCgoJCQoUDg8MEBcUGBgXFB...'
我如何从该字符串中知道文件的 MIME 类型?
在一般情况下,无法可靠地识别一段未标记数据的 MIME 类型。
许多文件格式都有魔术标记,可用于合理准确地确定文件类型,但有些魔术标记选择不当,可能例如与无关文件中的文本一致;当然,完全随机的位序列不是任何明确定义的文件格式。
libmagic
是通常用于执行此任务的 file
命令的核心组件。有几个 Python 绑定,但 https://pypi.org/project/python-libmagic/ 似乎是最受欢迎和最活跃的。
当然,base64只是一种编码无类型二进制数据的方法。这是一个使用示例数据的快速演示。
import base64
import magic
encoded_data = '/9j/4AAQSkZJRgABAQEASABIAAD//gA7Q1JFQVRPUjogZ2QtanBlZyB2MS4wICh1c2luZyBJSkcgSlBFRyB2NjIpLCBxdWFsaXR5ID0gOTUK/9sAQwAGBAUGBQQGBgUGBwcGCAoQCgoJCQoUDg8MEBcUGBgXFB==='
with magic.Magic() as m:
print(m.from_buffer(base64.b64decode(encoded_data)))
输出:
image/jpeg
(请注意,我必须修复您 encoded_data
末尾的填充。)
我有一个文件的 base64 编码字符串。
encoded_data = '/9j/4AAQSkZJRgABAQEASABIAAD//gA7Q1JFQVRPUjogZ2QtanBlZyB2MS4wICh1c2luZyBJSkcgSlBFRyB2NjIpLCBxdWFsaXR5ID0gOTUK/9sAQwAGBAUGBQQGBgUGBwcGCAoQCgoJCQoUDg8MEBcUGBgXFB...'
我如何从该字符串中知道文件的 MIME 类型?
在一般情况下,无法可靠地识别一段未标记数据的 MIME 类型。
许多文件格式都有魔术标记,可用于合理准确地确定文件类型,但有些魔术标记选择不当,可能例如与无关文件中的文本一致;当然,完全随机的位序列不是任何明确定义的文件格式。
libmagic
是通常用于执行此任务的 file
命令的核心组件。有几个 Python 绑定,但 https://pypi.org/project/python-libmagic/ 似乎是最受欢迎和最活跃的。
当然,base64只是一种编码无类型二进制数据的方法。这是一个使用示例数据的快速演示。
import base64
import magic
encoded_data = '/9j/4AAQSkZJRgABAQEASABIAAD//gA7Q1JFQVRPUjogZ2QtanBlZyB2MS4wICh1c2luZyBJSkcgSlBFRyB2NjIpLCBxdWFsaXR5ID0gOTUK/9sAQwAGBAUGBQQGBgUGBwcGCAoQCgoJCQoUDg8MEBcUGBgXFB==='
with magic.Magic() as m:
print(m.from_buffer(base64.b64decode(encoded_data)))
输出:
image/jpeg
(请注意,我必须修复您 encoded_data
末尾的填充。)