Download de arquivo

5 respostas
S

É o seguinte…

tenho um servlet com o metodo doGet() para gerar um arquivo pdf. Isso funciona normalmente. O problema é o seguinte. Não consigo que o usuário faça download do arquivo pra máquina dele. Como posso fazer isso?

grato,
Scott

5 Respostas

C

O que você tem que fazer é disponibilizar o caminho do PDF para o usuário, somente isso.

S

creio que não seja tão simples assim...

esse sistema está em jsf e tem phaselisteners por todos os lados...
disponibilizar o caminho não seria a melhor solução, sendo que por url, o faces-config.xml não deixa o usuário passar.

então o que fiz foi tentar fazer do seguinte modo..

public void escreveArquivo(HttpServletRequest request, HttpServletResponse response){
    
        String filePath = "D:/Pessoas.pdf";
        String fileName = "Pessoas.pdf";
      try{
        FileInputStream fileToDownload = new FileInputStream(filePath);
        ServletOutputStream out = response.getOutputStream();

        response.setContentType("application/pdf");
        response.setHeader("Content-Disposition","attachment; filename="+fileName);
        response.setContentLength(fileToDownload.available());

        int c;
        while((c=fileToDownload.read()) != -1){
        out.write(c);
        }
        out.flush();
        out.close();
        fileToDownload.close();
      } catch(Exception e){}
    }
C

Ah, você tinha esquecido de falar esse pequeno detalhe. :roll:

Bem, também tinha essa maneira, apesar de não ser muito viável dependendo do seu contexto, mas assim dá certo também.

S

Agora o problema é outro…

quando vc copia pelo inputstream, o arquivo que é gerado não é exatamente igual ao primeiro, e o acrobat não consegue abrir…

qual serah o problema?

eu nao vejo nenhum…

S

Problema resolvido…
pdf gerando normal…
o problema é que eu setava no ServletContext, um requestDispatcher, e então o pdf era copiado com a página do requestDispatcher embutida. Assim, o pdf não começava com %pdf, não poderia ser lido pelo acrobat, nem teria o mesmo tamanho do arquivo original.

Criado 21 de maio de 2007
Ultima resposta 22 de mai. de 2007
Respostas 5
Participantes 2