允许用户下载动态csv文件asp.net

时间:2010-07-14 20:25:00

标签: c# .net asp.net

我希望允许我的用户点击“下载”按钮,然后动态构建动态csv文件,并提示用户下载。我知道如何使用HTTPHandler构建文件,但不太确定通过下载传递内容的机制。

2 个答案:

答案 0 :(得分:11)

我通常会创建一个Generic Handler(.ashx)并执行以下操作:

public void ProcessRequest(HttpContext context)
{
   StringBuilder myCsv = new StringBuilder();
   foreach(myRow r in myRows) {
     myCsv.AppendFormat("\"{0}\",{1}", r.MyCol1, r.MyCol2);
   }

   context.Response.ContentType = "application/csv";
   context.Response.AddHeader("content-disposition", "attachment; filename=myfile.csv");
   context.Response.Write(myCsv.ToString());
}

现在,如果您正在构建的CSV非常大,您可能希望在创建它时写出每一行,而不是将其填充到StringBuilder中。

答案 1 :(得分:0)

只需在HTTP处理程序代码中发出Content-Disposition HTTP标头。大多数浏览器会将其解释为下载请求。将yourfile.csv替换为您希望用户查看的文件名。

context.Response.ContentType = "text/csv";
context.Response.AddHeader("Content-Disposition", "attachment; filename=yourfile.csv");