我正在研究一些代碼,以便從Dynamics CRM電子郵件附件中讀出BODY字段並將Base64字符串解碼爲要寫入的文件到文件系統。來自Dynamics CRM的PDF blob數據的Base-64字符數組或字符串的無效長度
這個過程似乎像。PNG等時,Excel的.xls等圖像文件做工精細,但當我試着和PDF文件轉換爲C#中的字節數組我得到的錯誤:
無效的長度Convert.FromBase64String()行上的Base-64字符數組或字符串。
var binaryData = File.ReadAllText(@"E:\test\stream.txt");
byte[] byteArray = Convert.FromBase64String(binaryData);
File.WriteAllBytes(@"E:\test\file.pdf", byteArray);
我試過將binarydata存儲在一個文件中並讀取它,以及只是定義一個帶有內容的C#字符串。正如我所說,它適用於其他文件類型,但不是PDF。
但溶液通過字節數組只是循環和單獨寫每個字節,它仍然在一個腐敗的PDF文件,結束了和Acrobat慣於開放。
最終,我會從數據庫字段或通過CRM API讀取binaryData,但我只是想先測試理論,我似乎是對所有類型的附件,除了PDF好...
一篇文章,我看到說,嘗試填充二進制數據之前,轉換爲一個字節數組..我嘗試了類似於下面,我得到過去的轉換錯誤,但PDF仍然損壞:字符串dummyData = b.Trim() .Replace(「」,「+」);如果(dummyData.Length%4> 0)dummyData = dummyData,則爲 。PadRight(dummyData.Length + 4 - dummyData.Length%4,'='); byte [] byteArray = Convert.FromBase64String(dummyData); –
處理字節和處理文本在編程中是完全不同的任務。當您將文本轉換爲字節(反之亦然)時,程序將根據關於編碼,字節順序和本地化的假設來格式化字節,這裏舉幾個例子。除非絕對需要將文件轉換爲文本,否則應從開始到結束將文件視爲字節數組。 – Abion47