2011-10-11 91 views
-1

可能重複:
How to Download A file stored in SQL DB in Binary Format如何使直接從ASP.NET一個數據庫下載鏈接,下載數據?

我存儲在SQL Server中的某些MS Word文檔。當我想下載它們,我把它們保存爲在服務器上的文件第一,然後用戶可以下載它們,但我正在尋找不涉及文件保存到服務器的文件系統的方式...

+0

你可以直接把數據從Web服務器的響應。 –

+1

您的標題與您的問題不同。你究竟在問什麼? – James

+0

@詹姆斯 - 我實在不明白兩者之間的不匹配?他們問如何在SQL Server中保存二進制數據,而不需要先保存到文件系統的中間步驟。 –

回答

2

你」需要一個實現IHttpHandler的自定義HttpHandler。請參閱MSDN中的IHttpHandler.ProcessRequest Method。設置適當的MIME類型並將數據庫中的二進制數據重定向到HttpContext的OutputStream。

一個例子(猜測,未測試)自定義處理函數調用Docs.ashx

using System.IO; 
using System.Web; 

public class Docs : IHttpHandler 
{ 
    public void ProcessRequest (HttpContext context) 
    { 
     context.Response.ContentType = "application/vnd.openxmlformats-officedocument.wordprocessingml.document"; 
     using (var streamReader = new StreamReader("fileSourceForDemonstration.docx")) 
     { 
      streamReader.BaseStream.CopyTo(context.Response.OutputStream); 
     } 
    } 

    public bool IsReusable 
    { 
     get { return false; } 
    } 
} 
+1

雖然你可以這樣做的,你可以考慮使用某種形式的查詢字符串參數有關的.aspx頁面中做的一樣好。不管怎麼說,代碼都是一樣的。 – Chris

+0

@克里斯答案爲[這個問題](http://stackoverflow.com/questions/1030433/byte-serving-pdfs-from-sql-varbinary)似乎解決它在.aspx路。由另一個克里斯回答:-) – Oli