2013-03-27 55 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已经与您的数据的字节数组,只写了吧。