[英]Invalid Character in base64 string when decoding XML
我們有一個Winform客戶端應用程序,正在使用我們編寫的Web服務。 此客戶端應用程序請求XML文件中包含的文檔,通常是將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,但是它很大。
有任何想法嗎?
問題解決了
為了從服務器流式傳輸文件,我們使用回調函數來讀取/寫入文件塊。 我們對每個塊進行了base64編碼。 錯誤。
解決方法-將所有塊寫入全局內存流對象。 在回調的末尾,然后執行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流。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.