C# 未知格式的base64解码

C# 未知格式的base64解码,c#,base64,decoding,C#,Base64,Decoding,我需要一个关于解码base64的建议。我将用c#做这件事 问题是,我不知道解码将输出什么类型的格式,可能是文本、XML、图像或PDF。我只有base64编码的字符串 你们建议我怎么做?有什么建议吗?许多图像类型和PDF都包含一个幻数,其中前X字节标识文件类型。您应该解码字符串并检查二进制文件中的这些内容(给出它们的列表)。如果仍然无法识别它,请检查它是否使用XML解析器解析为XML,否则假定它是文本。从base64字符串中提取MIME类型: /** * Extract the MIME typ

我需要一个关于解码base64的建议。我将用c#做这件事

问题是,我不知道解码将输出什么类型的格式,可能是文本、XML、图像或PDF。我只有base64编码的字符串


你们建议我怎么做?有什么建议吗?

许多图像类型和PDF都包含一个幻数,其中前X字节标识文件类型。您应该解码字符串并检查二进制文件中的这些内容(给出它们的列表)。如果仍然无法识别它,请检查它是否使用XML解析器解析为XML,否则假定它是文本。

从base64字符串中提取MIME类型:

/**
 * Extract the MIME type from a base64 string
 * @param encoded Base64 string
 * @return MIME type string
 */
private static String extractMimeType(final String encoded) {
    final Pattern mime = Pattern.compile("^data:([a-zA-Z0-9]+/[a-zA-Z0-9]+).*,.*");
    final Matcher matcher = mime.matcher(encoded);
    if (!matcher.find())
        return "";
    return matcher.group(1).toLowerCase();
}
用法:

final String encoded = "data:image/png;base64,iVBORw0KGgoAA...5CYII=";
extractMimeType(encoded); // "image/png"
extractMimeType("garbage"); // ""
然后,您可以编写字节数组:

var filePath = System.IO.Path.Combine(folderPath, string.Format("pdf_{0}.pdf", Guid.NewGuid()));
var byteArray = Convert.FromBase64String(base64pdf);

File.WriteAllBytes(filePath, byteArray);
并打开您的文件:

Device.OpenUri(new Uri("file://" + filePath));

或者标记数据,因为64编码的数据看起来像“
data:image/png;base64,ivborw0kggoaaaansuheugaaaaaakac
”并解析该字符串。

这可能是重复的,因此假设base64字符串包括MIME类型。当然,如果答案是正确的,那也不错:)