【发布时间】:2016-02-09 07:46:15
【问题描述】:
我得到 base64 字符串作为输入以将其保存为图像。 但我的问题是我不知道用户上传了什么图像格式。 如果有人知道如何从 base64 字符串获取图像格式或扩展名,请帮助我。
【问题讨论】:
我得到 base64 字符串作为输入以将其保存为图像。 但我的问题是我不知道用户上传了什么图像格式。 如果有人知道如何从 base64 字符串获取图像格式或扩展名,请帮助我。
【问题讨论】:
每个文件类型都应该在文件的开头有一个“幻数”,可以用来识别类型。
一些例子(更多见http://en.wikipedia.org/wiki/List_of_file_signatures):
filetype magic number(hex)
jpg FF D8 FF
gif 47 49 46 38
png 89 50 4E 47 0D 0A 1A 0A
bmp 42 4D
tiff(LE) 49 49 2A 00
tiff(BE) 4D 4D 00 2A
最好的办法是解码 base64 并检查字节数组的开头是否有其中一种字节模式。
您可能会考虑将字节模式转换为 Base64 并检查 Base64 图像的起始字符,但这可能会给您带来麻烦,因为 Base64 编码始终使用 3-byte-to-4-chars-encoding,因此幻数后面的字节可能会影响编码图像文件中的 Base-64 表示。
【讨论】:
89 50 4e 47 0d 0a 1a 0a 20 20 20 0d ,因此它显然是一个 png 文件。