C# Can';单击LinkButton事件时无法下载文件
当用户单击gridview中的链接按钮事件时,我试图下载文件,但该文件未下载 用户单击linkbutton事件时的代码:C# Can';单击LinkButton事件时无法下载文件,c#,asp.net,linkbutton,asplinkbutton,C#,Asp.net,Linkbutton,Asplinkbutton,当用户单击gridview中的链接按钮事件时,我试图下载文件,但该文件未下载 用户单击linkbutton事件时的代码: protected void downloadLink_Click1(object sender, EventArgs e) { LinkButton lnkbtn = sender as LinkButton; GridViewRow gvrow = lnkbtn.NamingContainer as GridViewRow; string fi
protected void downloadLink_Click1(object sender, EventArgs e)
{
LinkButton lnkbtn = sender as LinkButton;
GridViewRow gvrow = lnkbtn.NamingContainer as GridViewRow;
string filename = lnkbtn.CommandArgument;
byte[] mybuffer = Encoding.UTF8.GetBytes(filename);
Response.Clear();
Response.ClearHeaders();
Response.ClearContent();
//this puts the response to a page
Response.ContentType = "application/" + "octet-stream";
Response.AddHeader("Content-disposition", "attachment; filename=" + filename);
Response.AddHeader("Content-Length", mybuffer.Length.ToString());
Response.BinaryWrite(mybuffer);
Response.Flush();
Response.Close();
Response.End();
}使用内存流写入文件时,此代码对我有效。我的代码和你的代码的区别在于我有一个内容长度的头。您可能需要获取文件大小并添加此标题
MemoryStream mybuffer= New MemoryStream(File.ReadAllBytes(filename));
Response.Clear();
Response.ClearHeaders();
Response.ClearContent();
//this puts the response to a page
Response.ContentType = "application/" + "octet-stream";
Response.AddHeader("Content-disposition", "attachment; filename=" + filename);
Response.AddHeader("Content-Length", mybuffer.Length.ToString());
Response.BinaryWrite(mybuffer);
Response.Flush();
Response.Close();
Response.End();