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 »
