我有一个WCF服务,它返回存储在SQL数据库中的文档和图像。我能够毫无问题地返回所有图像。说到文档,我可以返回文档,但是打开它时它是空的。单步执行代码时文件大小正确,打开文档时,文件大小也正确。只是空白。
以下是我用来获取文件的内容:
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 :(得分:0)
您分配字节然后将其写出。当你分配字节时,它是一个零数组(或者可能是一个随机字节数组。不完全确定,但这既不在这里也不在那里。)。你永远不会填充它。
byte[] bytes = new byte[ms.Length];
fs.Write(bytes, 0, bytes.Length);
此外,正如Nikola指出的那样,如果byteArrayIn已经有一个包含数据的字节数组,那么看起来像MemoryStream可能是不必要的,只需将其写出来。