2010-03-16 7 views
0

이 질문에 대한 답변으로 C# 4.0: Convert pdf to byte[] and vice versa byte []를 PDF로 변환 할 수있었습니다. 바이트 배열 길이는 약 25990입니다. PDF 파일을 열려고하면 파일이 손상되었다고 표시됩니다. 그 이유는 무엇일까요?Byte []를 PDF로 변환

BinaryWriter를 시도했지만 0KB의 PDF를 만듭니다.

그것은 웹 서비스

샘플 코드

WebResponse resp = request.GetResponse(); 
var buffer = new byte[4096]; 
Stream responseStream = resp.GetResponseStream(); 
{ 
    int count; 
    do 
    { 
    count = responseStream.Read(buffer, 0, buffer.Length); 
    memoryStream.Write(buffer, 0, responseStream.Read(buffer, 0, buffer.Length)); 
    } while (count != 0); 
} 
resp.Close(); 
byte[] memoryBuffer = memoryStream.ToArray(); 
System.IO.File.WriteAllBytes(@"E:\sample1.pdf", memoryBuffer); 
int s = memoryBuffer.Length; 

BinaryWriter binaryWriter = new BinaryWriter(File.Open(@"E:\sample2.pdf", FileMode.Create)); 
binaryWriter.Write(memoryBuffer); 
+1

을에서 오는가? 정확히 무엇을 나타내는가? 코드에서 변수로 도착하기 전에 어떤 경로가 따라 왔습니까? 그 사이에 캐릭터에게 앞뒤로 마사지하지 않았습니까? – BalusC

+3

코드를 게시 할 수 있습니까? 질문에는 대답에 필요한 정보가 충분하지 않습니다. 그건 그렇고 = 25990 바이트 ** ** 약 25 킬로바이트입니다. – Oded

+0

우리는 천리안이 아니므로 코드를 게시하십시오. 그렇지 않으면 우리는 발에서 스스로를 쏘아 끝내고 당신을 만족시키지 못하는 부정확 한 답변을 줄 것입니다. – t0mm13b

답변

9

스트림에서 두 번 읽고 하나의 버퍼 만 쓰고 있습니다. 이 변경이로

count = responseStream.Read(buffer, 0, buffer.Length); 
memoryStream.Write(buffer, 0, responseStream.Read(buffer, 0, buffer.Length)); 

이`바이트 []`

count = responseStream.Read(buffer, 0, buffer.Length); 
memoryStream.Write(buffer, 0, count); 
+0

그게 전부! SO 록스! –

2

당신이 하나 개의 불필요한 읽기를 가지고 있기 때문에 당신이 어떤 바이트 누락 보인다로부터의 응답입니다. 이것을 시도하십시오 :

do 
    { 
    count = responseStream.Read(buffer, 0, buffer.Length); 
    memoryStream.Write(buffer, 0, count); 
    } while (count != 0);