【问题标题】:Download csv file via HTTP handler通过 HTTP 处理程序下载 csv 文件
【发布时间】:2015-02-06 22:17:52
【问题描述】:

我在尝试下载 csv 文件时使用 HttpContext.Current.Response.End(); 时出错。 我搜索错误并获得解决方案。使用Handler避免Response.End();

我的处理程序:

public class DownloadHandler : IHttpHandler
{

    public void ProcessRequest(HttpContext context)
    {
        string table = HttpContext.Current.Request.QueryString["table"].ToString();
        string fileName = HttpContext.Current.Request.QueryString["fileName"].ToString();
        table = table.Replace(">", ">");
        table = table.Replace("&lt;", "<");
        HttpContext.Current.Response.ClearContent();
        HttpContext.Current.Response.AddHeader("content-disposition", "attachment;filename=" + fileName + "_" + DateTime.Now.ToString("M_dd_yyyy_H_M_s") + ".csv");
        HttpContext.Current.Response.ContentType = "application/text";
        HttpContext.Current.Response.Write(table);

    }


    public bool IsReusable
    {
        get
        {
            return false;
        }
    }

}

我像这样在按钮点击中调用这个处理程序。

HttpWebRequest request = (HttpWebRequest)WebRequest.Create("Mypath/DownloadHandler.ashx?table=" + csv + "&fileName=User-Report");
HttpWebResponse response = (HttpWebResponse)request.GetResponse();

它调用处理程序。我没有错误但未下载 csv 文件?我无法弄清楚真正的问题在哪里。我可以在代码中遗漏一些东西吗?感谢您的帮助。

注意:csv 是一个来自另一个进程的字符串,不是真正的问题。

【问题讨论】:

  • 收到回复后怎么办?
  • @dotnetstep 没有任何错误。只是停止一个页面。

标签: c# asp.net csv export-to-csv ihttphandler


【解决方案1】:

如果您正在执行 HttpWebRequest,那么您必须先请求然后 getResponse。从响应流中读取并保存。

        HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://localhost:57169/DownloadHandler.ashx?table=tttex&fileName=User-Report");
        HttpWebResponse response = (HttpWebResponse)request.GetResponse();
        byte[] data = new System.IO.BinaryReader(response.GetResponseStream()).ReadBytes((int)response.ContentLength);
        System.IO.File.WriteAllBytes("C:\\Temp.csv", data);

如果您希望浏览器下载,那么只需执行以下操作。

  Response.Redirect("http://yourpath/DownloadHandler.ashx?table=tttex&fileName=User-Report");

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-07-22
    • 1970-01-01
    • 2018-05-05
    • 1970-01-01
    • 2011-08-09
    • 2015-07-07
    • 2010-10-11
    • 2017-10-10
    相关资源
    最近更新 更多