【问题标题】:How to get extension from base64 using c#如何使用 c# 从 base64 获取扩展名
【发布时间】:2016-02-09 07:46:15
【问题描述】:

我得到 base64 字符串作为输入以将其保存为图像。 但我的问题是我不知道用户上传了什么图像格式。 如果有人知道如何从 base64 字符串获取图像格式或扩展名,请帮助我。

【问题讨论】:

    标签: image base64


    【解决方案1】:

    每个文件类型都应该在文件的开头有一个“幻数”,可以用来识别类型。

    一些例子(更多见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 表示。

    【讨论】:

    • 感谢您的快速回复,但我的 base64 字符串类似于“iVBORw0KGgoAAAANSUhEUgAAAIkAAABSCAYAAABg3f.............”,与任何组合都不匹配。
    • 这就是我说解码并使用字节的原因。解码 Base64-String 的开头会显示以下字节(十六进制)89 50 4e 47 0d 0a 1a 0a 20 20 20 0d ,因此它显然是一个 png 文件。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-17
    • 1970-01-01
    • 1970-01-01
    • 2010-09-16
    • 2019-02-26
    • 2021-02-02
    相关资源
    最近更新 更多