2013-03-27 5 views
0

SQL 데이터베이스에 저장된 문서와 이미지를 반환하는 WCF 서비스가 있습니다. 문제없이 모든 이미지를 반환 할 수 있습니다. 문서와 관련하여 문서를 반환 할 수는 있지만 문서를 열면 문서가 비어 있습니다. 코드를 단계별로 실행할 때 파일 크기가 정확하며 문서를 열 때 정확한 페이지 수가 있습니다. 그냥 비어있어.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이 필요합니까? 바이트 배열을 응답으로 쓰고 있습니까? –

+0

바이트 배열을 새 바이트 [ms.Length]로 설정할 때. 이렇게하면 지정한 길이만큼 빈 파일이 만들어집니다. 길이를 지정하지 않고 실제 데이터로 바이트 배열을 채워야합니다. – CathalMF

답변

0

바이트를 할당 한 다음 쓸 수 있습니다. 바이트를 할당 할 때는 0의 배열 (또는 무작위 바이트의 배열입니다. 완전히 확실하지는 않지만 여기서도 거기에 있지 않습니다.). 당신은 결코 그것을 채우지 않는다. 니콜라는 지적 byteArrayIn 이미 데이터를 바이트의 배열이있는 경우 MemoryStream을가 불필요 할 수처럼

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

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

또한, 보이는, 단지 그 대신을 작성합니다.

관련 문제