C# 链接按钮不工作的点击事件下载CSV文件
下面的代码不起作用。我想从链接按钮点击事件文件夹下载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
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???好的,我明白你的意思了。