如何从Base64编码的文件中知道文件的MIME类型? [英] How to know MIME-type of a file from base64 encoded data in python?

查看:0
本文介绍了如何从Base64编码的文件中知道文件的MIME类型?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个文件的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编码的文件中知道文件的MIME类型?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆