Usuário com melhor resposta
Baixar arquivo com extensão pdf em uma gridview

Pergunta
-
Tenho uma página onde tenho um arquivo em formato pdf, quando o usuário clica ele abre o arquivo e eu queria que ele baixasse o arquivo e não abrisse o arquivo como faço isso ? Fiz os testes tanto no IE como no Chrome e os dois fizeram do mesmo jeito.
Junior
Respostas
-
Junior,
Acho que é isso que você quer:
protected void lbtnCabecalhoAjuda_Click(object sender, EventArgs e) { string caminhoArquivo = Page.Request.PhysicalApplicationPath + "/Ajuda/Manual.pdf"; string nomeArquivo = new FileInfo(caminhoArquivo).Name; byte[] arquivo = File.ReadAllBytes(caminhoArquivo); Response.Clear(); Response.ClearHeaders(); Response.ClearContent(); Response.ContentType = "application/octet-stream"; Response.AddHeader("Content-Disposition", "attachment; filename=\"" + nomeArquivo + " \""); Response.AddHeader("Content-Length", arquivo.Length.ToString()); Response.BinaryWrite(arquivo); Response.Flush(); Response.Close(); Response.End(); }
Abraço,
Carlos Eduardo Ferreira
- Sugerido como Resposta Lucio Rogerio SPBanned terça-feira, 21 de julho de 2015 15:53
- Marcado como Resposta Junior_luiz terça-feira, 21 de julho de 2015 17:45
Todas as Respostas
-
Junior,
Dê uma olhada nesses dois artigos:
http://stackoverflow.com/questions/6794255/html-download-a-pdf-file-instead-of-opening-them-in-browser-when-clicked
http://www.codeproject.com/Articles/15649/Create-and-download-text-file-from-a-web-page
Abraço,
Carlos Eduardo Ferreira
-
Carlos eu lí seus artigos, eu tenho fisicamente em uma pasta no servidor o arquivo, mostro os arquivos em um gridview com um link o usuário clica no link do arquivo que ele quer baixar, o que quero é no caso de arquivos em .pdf,.txt,.xls,etc ele não abrir o arquivo e sim baixa-lo.
No segundo artigo que vc mandou ele fala em baixar mais vou testar.
Junior
-
Junior,
Acho que é isso que você quer:
protected void lbtnCabecalhoAjuda_Click(object sender, EventArgs e) { string caminhoArquivo = Page.Request.PhysicalApplicationPath + "/Ajuda/Manual.pdf"; string nomeArquivo = new FileInfo(caminhoArquivo).Name; byte[] arquivo = File.ReadAllBytes(caminhoArquivo); Response.Clear(); Response.ClearHeaders(); Response.ClearContent(); Response.ContentType = "application/octet-stream"; Response.AddHeader("Content-Disposition", "attachment; filename=\"" + nomeArquivo + " \""); Response.AddHeader("Content-Length", arquivo.Length.ToString()); Response.BinaryWrite(arquivo); Response.Flush(); Response.Close(); Response.End(); }
Abraço,
Carlos Eduardo Ferreira
- Sugerido como Resposta Lucio Rogerio SPBanned terça-feira, 21 de julho de 2015 15:53
- Marcado como Resposta Junior_luiz terça-feira, 21 de julho de 2015 17:45
-
Eduardo, realmente dá certo como vc postou, mais tem um problema, eu mostro o(s) arquivo(s) em um gridview e tenho uma coluna com um templatefield que tem um hyperlink e no evento rowDataBound que eu trato isso, como vc postou funciona mais ele não me mostra a gridview, hoje em teste eu só tenho um arquivo mais futuramente terei mais e nesse caso como eu faço ?
Junior
-
-
olha o meu codigo
protected void Gv_Importante_RowDataBound(object sender, GridViewRowEventArgs e) { if (e.Row.RowType == DataControlRowType.DataRow || e.Row.RowType == DataControlRowType.EmptyDataRow) { int rowindex = e.Row.DataItemIndex; string nmarqu = Convert.ToString(Gv_Importante.DataKeys[rowindex].Values["nmarqu"]); HyperLink link = (HyperLink)e.Row.FindControl("HyperLink1"); link.NavigateUrl = "../../Arquivos/importantes/Gerenciais/Arquivos/" + nmarqu.Trim(); string nomeArquivo = new FileInfo(link.NavigateUrl).Name; byte[] arquivo = File.ReadAllBytes(Server.MapPath(link.NavigateUrl)); Response.Clear(); Response.ClearHeaders(); Response.ClearContent(); Response.ContentType = "application/octet-stream"; Response.AddHeader("Content-Disposition", "attachment; filename=\"" + nomeArquivo + " \""); Response.AddHeader("Content-Length", arquivo.Length.ToString()); Response.BinaryWrite(arquivo); Response.Flush(); Response.Close(); Response.End(); link.Text = nmarqu.Trim(); } }
Junior
- Marcado como Resposta Junior_luiz terça-feira, 21 de julho de 2015 14:47
- Não Marcado como Resposta Junior_luiz terça-feira, 21 de julho de 2015 17:45
-
-
Como falei é uma página onde vai existir vários arquivos a serem baixados, mostro esses arquivos no gridview ai o usuário escolhe qual quer baixar. Como eu fiz anteriormente no click do hyperlink do gridview ele abre o pdf e eu não queria, queria que ele mostre a opção de baixar ou abrir, como vc fez.
Junior
-
Você pode criar uma página Download.aspx e por esse código no Page_Load e recebe o nome do arquivo via QueryString, Session, etc.
E no gridview você chamada esse página via JavaScript(window.open).
Seria uma solução...
Carlos Eduardo Ferreira
-
-
-