2013-03-27 79 views
0

我有一個WCF服務,它返回存儲在SQL數據庫中的文檔和圖像。我能夠沒有問題地返回所有圖像。說到文檔,我可以返回文檔,但打開文檔時它是空的。單步執行代碼時文件的大小是正確的,打開文檔時文件的大小也是正確的。只是全部空白。C#函數返回一個空文檔

這裏是我用得到的文件是什麼:

String folderPath = System.Configuration.ConfigurationManager.AppSettings["ImagePath"].ToString(); 

MemoryStream ms = new MemoryStream(byteArrayIn); 

FileStream fs = new FileStream(folderPath + "1" + fileExt,FileMode.Create ,FileAccess.Write); 

byte[] bytes = new byte[ms.Length]; 

fs.Write(bytes, 0, bytes.Length); 

fs.Flush(); 

ms.Flush(); 

fs.Close(); 

ms.Close(); 

我也有.pdfs嘗試過了,它告訴我,該文件可能已損壞而無法打開。

感謝您的幫助。

+0

爲什麼你需要MemoryStream?你寫字節數組作爲響應? – 2013-03-27 14:05:16

+0

當您將您的字節數組設置爲新的字節[ms.Length]。這隻會爲您指定的長度創建一個空文件。你需要用實際數據填充你的字節數組,而不是指定它的長度。 – CathalMF 2013-03-27 15:30:30

回答

0

您分配字節,然後寫出來。當你分配字節時,它是一個零數組(或者是一個隨機字節數組,但不完全確定,但這不是在這裏或那裏)。你永遠不會填充它。

byte[] bytes = new byte[ms.Length]; 

fs.Write(bytes, 0, bytes.Length); 

此外,由於尼古拉指出,它看起來像的MemoryStream可能是不必要的,如果byteArrayIn已經與您的數據的字節數組,只寫了吧。