【发布时间】:2011-05-07 01:49:30
【问题描述】:
我们有一个 Winform 客户端应用程序,它正在使用我们编写的 Web 服务。此客户端应用程序请求包含在 XML 文件中的文档,通常是写入 XML 文件中 base64 编码二进制字段的 PDF。
客户端成功下载、解码并正确打开 99% 的文档。
但是,当客户端进行此调用时,我们开始遇到一些文件失败:
byte[] buffer = Convert.FromBase64String(xNode["fileIMAGE"].InnerText);
System.FormatException-
Message="Invalid character in a Base-64 string."
Source="mscorlib"
我们已将 XML 文件中的 base64 blob 写入文本文件。我没有看到任何“\0”字符。我可以发布整个 blob,但它非常大。
有什么想法吗?
【问题讨论】:
-
您是否可以添加一些代码来报告所有不在
isalnum()、+或/中的字符?这应该会留下一大堆换行符或 crlf 或类似的东西,最后填充,以及你的神秘角色。 -
我坐在这里编写一个测试应用程序来解析生成的字符来测试那个东西。尝试实施此处提供的解决方案stackoverflow.com/questions/3355407/…
-
base64 blob 的主体中有 =(等号)。我不认为这是一个有效的 base64 字符(A-Z a-z 0-9 + /),而不是最后的填充。
-
@paparush, hrm,中间那个
=听起来很麻烦。您可以在 small 输入上尝试您的编码例程吗?生成 10 字节到 10 KB 之间的随机字节字符串,也许您会偶然生成一个显示问题的字符串。 -
blob 是否有可能是多个 Base64 对象,每个对象都以 = 填充结尾?