Archive for the ‘Jsf’ Category

Download de arquivo com Java

Se você gostaria que quando o usuário clicasse num link ao invés de ser exibido uma imagem (ou qualquer outro arquivo) fosse apresentado para ele a telinha de download você está no lugar certo.

Para que isso ocorra você terá que forçar para que o navegador mostre a tela de download, se for apenas redirecionado para o caminho do arquivo e este for uma imagem por exemplo o navegador irá tentar exibir a imagem.
Primeiro você vai precisar obter o objeto HttpServletResponse (neste caso foi usado para JSF)

HttpServletResponse response = (HttpServletResponse)
FacesContext.getCurrentInstance().getExternalContext().getResponse();

Após esse passo deve ser setado o nome do aquivo para download

response.setHeader("Content-Disposition",
"attachment;filename=\"" + nomeDoArquivo + "\"");

E agora a “mágica”, o que vai forçar o navegador mostrar a tela de download, mesmo que ele seja capaz e exibir o tal arquivo

response.setContentType("application/download");

Você ainda poderá definir outras informações como o charset, ou o tamanho do aquivo

response.setCharacterEncoding("ISO-8859-1");
response.setContentLength(arquivo.length);

Pra terminar pegue a saída padrão, escreva o arquivo e finalize

OutputStream out;
out = response.getOutputStream();
out.write(arquivo);
out.flush();
out.close();
FacesContext.getCurrentInstance().responseComplete();

Segue o código completo:
Read the rest of this entry »