Já estou há quase dois dias tentando resolver este problema e não consigo.
Tenho uma determinada pasta no servidor(fora das dependencias do projeto) só com imagens e preciso enviá-las ao cliente como um simples download.
O problema é que os arquivos a.pdf e .jpg abrem direto na tela exibindo apenas um código estranho q sinceramente não sei o q é.%PDF-1.4
%����
1 0 obj <</Type/XObject/ColorSpace/DeviceRGB/Subtype/Image/BitsPerComponent 8/Width 793/Length 1141785/Height 1112/Filter/DCTDecode>>stream
�����JFIF��d�d�����RExif��II*�����i�������������������,�������LEAD Technologies Inc. V1.01�����C����C���X"��������������
�������}�!1AQa"q2���#B��R��$3br�
%&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz�����������������������������������������������������������������������������������
������w�!1AQaq"2�B���� #3R�br�
abraço.
seguem os códigos:File f = new File(this.dirCertificados + fileName + ".jpg");
if (f.exists()) {
downloadImageFromFile(f);
public void downloadImageFromFile(File file) throws Exception {
System.out.println("downloading...");
System.out.println(file.getName());
System.out.println(file.getPath());
if (!file.exists())
throw new FileNotFoundException("Arquivo não encontrado!");
this.download(this.fileToByte(file), file.getName());
}
public void download(byte[] arquivo, String fileName) throws IOException {
FacesContext facesContext = FacesContext.getCurrentInstance();
HttpServletResponse response = (HttpServletResponse) facesContext
.getExternalContext().getResponse();
response.setContentType("application/octet-stream");
response.setContentLength(arquivo.length);
response.addHeader("Content-Disposition", "attachment; filename="
+ "\"" + fileName + "\"");
response.getOutputStream().write(arquivo);
response.getOutputStream().flush();
response.getOutputStream().close();
facesContext.responseComplete();
}