none
Download Arquivo PDF RRS feed

  • Pergunta

  • Boa tarde,

    Tenho um DataTable que retorna um byte[] (um arquivo PDF gravado no banco de dados).

    Preciso q no evento click, o download desse arquivo seja feito automaticamente. Não posso salvá-lo em nenhum diretório, por isso, tentei usar MemoryStream, mas não consegui fazer. 

    Alguém poderia me ajudar com algum exemplo? 

    Obrigada


    • Editado Helena Mam segunda-feira, 10 de outubro de 2016 21:00
    segunda-feira, 10 de outubro de 2016 20:45

Respostas

  • Helena,

    Segue um exemplo:

    Response.Clear();
    MemoryStream ms = new MemoryStream(byteArray);
    Response.ContentType = "application/pdf";
    Response.AddHeader("content-disposition", "attachment;filename=nome_pdf.pdf");
    Response.Buffer = true;
    ms.WriteTo(Response.OutputStream);
    Response.End();


    Att,
    Leandro

    Se foi útil, marque como útil ou como resposta.


    • Editado Leandro Tozetto terça-feira, 11 de outubro de 2016 13:02
    • Sugerido como Resposta Leandro Tozetto terça-feira, 11 de outubro de 2016 13:02
    • Marcado como Resposta Helena Mam terça-feira, 11 de outubro de 2016 14:46
    terça-feira, 11 de outubro de 2016 13:02

Todas as Respostas

  • É para Web ?

    Se a resposta contribuiu com seu aprendizado por favor marque como Útil
    Se solucionou seu problema por favor marque como Resposta
    Atenção, se seu problema foi resolvido não deixe o post aberto 

    Visite : www.codigoexpresso.com.br

    terça-feira, 11 de outubro de 2016 01:37
  • Oi, desculpa não ter falado antes. É sim para web.
    terça-feira, 11 de outubro de 2016 12:49
  • Helena,

    Segue um exemplo:

    Response.Clear();
    MemoryStream ms = new MemoryStream(byteArray);
    Response.ContentType = "application/pdf";
    Response.AddHeader("content-disposition", "attachment;filename=nome_pdf.pdf");
    Response.Buffer = true;
    ms.WriteTo(Response.OutputStream);
    Response.End();


    Att,
    Leandro

    Se foi útil, marque como útil ou como resposta.


    • Editado Leandro Tozetto terça-feira, 11 de outubro de 2016 13:02
    • Sugerido como Resposta Leandro Tozetto terça-feira, 11 de outubro de 2016 13:02
    • Marcado como Resposta Helena Mam terça-feira, 11 de outubro de 2016 14:46
    terça-feira, 11 de outubro de 2016 13:02
  • Obrigada pela ajuda Leandro!

    Mas ele estoura uma exception no catch ("Thread was being aborted").

    E não faz o download :/

    terça-feira, 11 de outubro de 2016 13:49
  • Tente trocar o Response.End() pelo código abaixo, ou se estiver utilizando o bloco try/catch, remova ele.

    HttpContext.Current.Response.Flush();
    HttpContext.Current.Response.SuppressContent = true;
    HttpContext.Current.ApplicationInstance.CompleteRequest();


    Att,
    Leandro

    Se foi útil, marque como útil ou como resposta.

    terça-feira, 11 de outubro de 2016 14:13
  • Leandro, 

    não deu erro, mas simplesmente n aconteceu nada...

     byte[] dbbyte;
               
                    dbbyte = (byte[])dt.Rows[0]["arquivodigitalizado"];
                    Response.Clear();
                    MemoryStream ms = new MemoryStream(dbbyte);
                    Response.ContentType = "application/pdf";
                    Response.AddHeader("content-disposition", "attachment;filename=nome_pdf.pdf");
                    Response.Buffer = true;
                    ms.WriteTo(Response.OutputStream);
                    HttpContext.Current.Response.Flush();
                    HttpContext.Current.Response.SuppressContent = true;
                    HttpContext.Current.ApplicationInstance.CompleteRequest();

    terça-feira, 11 de outubro de 2016 14:23
  • Em MVC 4 basta fazer assim

     public ActionResult Relatorio()
     {
        return File(RelatorioByte, "application/pdf");
     

    Se a resposta contribuiu com seu aprendizado por favor marque como Útil
    Se solucionou seu problema por favor marque como Resposta
    Atenção, se seu problema foi resolvido não deixe o post aberto 

    Visite : www.codigoexpresso.com.br

    terça-feira, 11 de outubro de 2016 14:30
  • Mas não é MVC, é web forms mesmo rsrs...
    terça-feira, 11 de outubro de 2016 14:35
  • Leandro, 

    Deu certo. Dei um build na solução e funcionou.

    Obrigada mesmo!!!

    terça-feira, 11 de outubro de 2016 14:46