如何创建直接从ASP.NET中的数据库下载数据的下载链接?

时间:2011-10-11 12:17:46

标签: c# asp.net sql-server-2008 byte varbinarymax

  

可能重复:
  How to Download A file stored in SQL DB in Binary Format

我在SQL Server中存储了一些MS word文档。当我想下载它们时,我先将它们保存为服务器上的文件然后用户可以下载它们,但我正在寻找一种不涉及将文件保存到服务器文件系统的方法...

1 个答案:

答案 0 :(得分: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; }
    }
}