如果我有一个base64字符串,但我不知道它是jpg、png、pdf还是其他什么,我该如何将其转换为有效文件?

问题描述 投票:0回答:1

我正在尝试从 Dynamics CRM 获取电子邮件附件,并希望以其原始格式保存文件。 当我尝试从 CRM 电子邮件实体获取信息时,我得到一个 Base64 字符串作为附件的内容。我不知道它是 jpg、png、pdf、txt 还是任何其他文件格式,现在如何将其转换为原始文件格式。 我们可以从base64字符串本身识别文件的格式还是我们需要其他信息来知道文件类型??

我尝试通过邮递员从 CRM 获取“activitymimeattachments”实体,我得到了 base64 字符串。现在我想以原始文件格式保存该附件的所有内容。我怎样才能使用 ADF 或逻辑应用程序来做到这一点

base64 azure-data-factory dynamics-crm azure-logic-apps
1个回答
0
投票

JPG、PNG 和 PDF 文件始终以唯一签名(幻数)开头:

  • JPG 文件以字节开头
    FF
    D8
    FF
    (字符串
    ÿØÿ
  • PNG 文件以字节开头
    89
    50
    4E
    47
    0D
    0A
    1A
    0A
    (字符串
    ‰PNG♪◙→◙
  • PDF 文件以字节开头
    25
    50
    44
    46
    (字符串
    %PDF

在base64编码中,每3个字节的源数据表示为4个字符。这意味着解码 Base64 编码数据的前 4 个字符会得到源数据的前 3 个字节;解码 Base64 编码数据的前 8 个字符会得到源数据的前 6 个字节,依此类推。

简而言之,

  • Base64 编码的 JPG 文件始终以
    /9j/
  • 开头
  • Base64 编码的 PNG 文件始终以
    iVBORw0K
  • 开头
  • Base64 编码的 PDF 文件始终以
    JVBE
  • 开头

这将是从 Base64 编码的字符串中识别文件格式的最快且最肮脏的方法,而无需对字符串进行解码。

这绝不是确保格式正确的可靠方法:普通 TXT 文件也可以以 %PDF 开头 😄

我怀疑当您从CRM获取信息时,您不仅可以获得附件的base64编码内容,还可以获得文件名!我建议您朝这个方向挖掘,而不是尝试从文件内容猜测文件的类型。

© www.soinside.com 2019 - 2024. All rights reserved.