2010-08-04 6 views
1

ASP.NET 페이지를 통해 데이터베이스의 이진 데이터를 보내려고합니다. 속성 data.Length가 2400이라는 것을 알 수 있습니다. 즉, 2400 바이트를 의미합니다. 이상한 일은이 데이터를받을 때 크기가 ~ 4kb이며 손상된 것으로 보입니다. 문제가 뭔지 알 겠어?이진 데이터 문제가 발생했습니다.

byte[] data = proxy.getData(id); 
Response.Clear(); 
Response.AddHeader("Content-Disposition", "attachment; filename=data.bin"); 
Response.AddHeader("Content-Length", data.Length.ToString()); 
Response.ContentType = "application/octet-stream"; 
Response.Write(data); 
Response.Flush(); 
+0

'데이터'에 예상 한 내용이 포함되어 있는지 확인해 주셨습니다. 이전에 비슷한 코드를 작성했고 다운로드 한 파일이 잘못된 이유를 알아 내려고 노력했습니다. 실제로는 내가 보낸 데이터가 더프였습니다! =) – Rob

+0

실제로 파일에 내용을 쓰고 그 파일로 리다이렉트하여 다운로드하라는 메시지로 확인했습니다 :) 솔루션의 장점은 아니지만 데이터가 유효하다는 것을 보여주었습니다. 어쨌든, 대답 주셔서 감사합니다, 그것은 내 문제를 해결. – scripni

답변

2

는 Response.Write에의 4 과부하가 있습니다

public void Write(char ch); 
public void Write(object obj); 
public void Write(string s); 
public void Write(char[] buffer, int index, int count); 

그리고 당신이 object obj 오버로드를 호출하고 있음을 나는 코드 (Response.Write(data))를 기반으로, 의심 것이다. 시도해 보셨습니까 :

Response.BinaryWrite(data); 

이것은 특히 바이트 배열의 내용을 출력 스트림에 기록하기위한 것입니다.

+0

남자 나는 어리 석다, 도와 줘서 고마워. – scripni

관련 문제