C# 链接按钮不工作的点击事件下载CSV文件

C# 链接按钮不工作的点击事件下载CSV文件,c#,asp.net,C#,Asp.net,下面的代码不起作用。我想从链接按钮点击事件文件夹下载CSV文件 protected void LinkButton1_Click(object sender, EventArgs e) { string filePath = "~/Data/Book1.csv"; System.IO.FileInfo file = new System.IO.FileInfo(Server.MapPath(filePath)); if (file.Exists) { WebClient

下面的代码不起作用。我想从链接按钮点击事件文件夹下载CSV文件

protected void LinkButton1_Click(object sender, EventArgs e)
{
  string filePath = "~/Data/Book1.csv";
  System.IO.FileInfo file = new System.IO.FileInfo(Server.MapPath(filePath));
  if (file.Exists)
  {
    WebClient req = new WebClient();
    HttpResponse response = HttpContext.Current.Response;
    //string filePath = "";
    response.Clear();
    response.ClearContent();
    response.ClearHeaders();
    response.Buffer = true;
    response.AddHeader("Content-Disposition", "attachment;filename=Filename.extension");
    byte[] data = req.DownloadData(Server.MapPath(filePath));
    response.BinaryWrite(data);
    response.End();   
  }
}

您可以直接将文件传输到客户端,而不是使用
WebClient
读取文件。只要文件位于本地文件系统中,就不需要使用web请求获取它,而是可以直接读取它。这是更有效的

protected void LinkButton1_Click(object sender, EventArgs e)
{
  string filePath = "~/Data/Book1.csv";
  System.IO.FileInfo file = new System.IO.FileInfo(Server.MapPath(filePath));
  if (file.Exists)
  {
    HttpResponse response = HttpContext.Current.Response;
    response.Clear();
    response.ClearContent();
    response.ClearHeaders();
    response.AddHeader("Content-Disposition", "Attachment;Filename=" + file.Name);
    response.TransmitFile(file.FullName);
    response.Flush();
    response.End();   
  }
}
我还建议在结束响应之前禁用缓冲区并刷新内容


正如@BobSwager所指出的,在
内容处置
标题中存在一些问题。

响应.AppendHeader(“内容处置”、“附件;文件名=“+file.Name+”)你可以试试我发布的代码。你说的“不工作”是什么意思?你有例外吗?文件是否未传输到客户端?为什么要使用
WebClient
来读取文件?它应该是appendHeader而不是AddHeader???好的,我明白你的意思了。