2010-08-04 112 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

不承認我發佈的答案,你是否證實'data'包含你所期望的?我之前編寫過類似的代碼,並花費了很多年時間試圖找出爲什麼下載的文件是錯誤的,而實際上我發送的數據是duff! =) – Rob 2010-08-04 08:05:33

+0

我已經通過實際將內容寫入文件然後重定向到該文件來驗證它,以便它提示我下載它:)不是最好的解決方案,但它表明數據是有效的。無論如何,感謝您的答案,它解決了我的問題。 – scripni 2010-08-04 08:14:59

回答

2

只有4的Response.Write的重載:

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

而且我會懷疑,根據您的代碼(Response.Write(data)),你調用的object obj超載。您是否嘗試過:

Response.BinaryWrite(data); 

這是專門用於將字節數組的內容寫入輸出流。

+0

男人我感到很蠢,謝謝你的幫助。 – scripni 2010-08-04 08:13:35