2016-12-28 1 views
0

Я пытаюсь загрузить файл, когда пользователь нажимает на событие кнопки ссылки из gridview, но файл не загружается.Не удается скачать файл на событие LinkButton нажато

код у меня есть, когда пользователь щелкает LinkButton события:

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(); 
Смежные вопросы