簡體   English   中英

解碼XML時base64字符串中的無效字符

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM