2016-12-28 12 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(); 
関連する問題