gpt4 book ai didi

c# - 解码 XML 时 base64 字符串中的无效字符

转载 作者:太空宇宙 更新时间:2023-11-03 14:18:53 25 4
gpt4 key购买 nike

我们有一个 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"

我们已经将 base64 blob 从 XML 文件写到文本文件中。我没有看到任何“\0”字符。我可以发布整个 blob,但它非常大。

有什么想法吗?

最佳答案

问题已解决

为了从服务器流式传输文件,我们使用回调函数来读取/写入文件 block 。我们对每个 block 进行 base64 编码。错了。

解决方案 - 将所有 block 写入全局内存流对象。在回调结束时,进行base64编码。

在回调函数中:

 if (brData.ChunkNo == 1)
{

// Set the Content-type of the file
if (brData.MimeType.Length < 1)
{
mimeType = "application/unknown";
}
else
{
mimeType = brData.MimeType;
}

msbase64Out = new MemoryStream();
}


if (brData.bytesJustRead > 0)
{
fileMS.WriteTo(msbase64Out);

}


if (brData.bytesRemaining < 1)
{
byte[] imgBytes = msbase64Out.ToArray();

string img64 = Convert.ToBase64String(imgBytes);

viewdocWriter.WriteString(img64);
}

msbase64Out 是每次调用回调时都会写入的全局内存流。viewdocWriter 是一个全局 XML 编写器,负责写出发送到客户端应用程序的 XML 流。

关于c# - 解码 XML 时 base64 字符串中的无效字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5918614/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com