0

我已经将 csv 文件保存为 /Exports/test.csv。我想允许用户点击按钮下载文件。我为该代码创建了一个处理程序,如下所示:

<%@ WebHandler Language="C#" Class="Downloadfile" %>

using System;
using System.Web;
using System.Net;

public class Downloadfile : IHttpHandler
{
    public void ProcessRequest(HttpContext context)
    {
        HttpContext.Current.Response.ClearHeaders();
        HttpContext.Current.Response.Clear();

        context.Response.ContentType = "text/csv";
        context.Response.AddHeader("Content-Disposition", 
            "attachment; filename=" + context.Request.QueryString["file"]);

        context.Response.End();
    }

    public bool IsReusable
    {
        get
        {
            return true;
        }
    }
}

上面的代码下载文件但它是空的。我只想下载 csv 文件及其内容。

4

2 回答 2

3

实际上,前几天我不得不做同样的事情,这取决于用户在“接受”标题中传递的内容。我使用了MSDN 文章 Media Formatters中的示例,它运行良好。

因为我使用的是 MVC 的 WebApi,所以我的和你的有点不同,但基本概念是相同的。

于 2013-03-11T17:44:07.223 回答
3

您需要传输文件。您可以使用TransmitFile方法来做到这一点,也可以直接写入context.Response.OutputStream.

public void ProcessRequest(HttpContext context)
{
    context.Response.ClearHeaders();
    context.Response.Clear();
    context.Response.ContentType = "text/csv";
    context.Response.AddHeader("Content-Disposition", "attachment; filename=" +  context.Request.QueryString["file"]);
    context.Response.TransmitFile("/Exports/test.csv");
    context.Response.End();
}
于 2013-03-11T17:41:57.683 回答