2016-12-28 87 views
0

我试图下载文件,当用户点击从gridview的链接按钮事件,但该文件没有下载。无法下载LinkBut​​ton事件点击文件

的代码,当用户点击LinkBut​​ton的事件我有:使用一个内存流写入文件时

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(); 

}

回答

0

此代码对我的作品。我的代码和你的代码之间的区别是我有一个Content-Length头。您可能需要获取文件大小并添加此标题。

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(); 
相关问题