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"��������������a
�������}�!1AQaa"q2���#B��R��$3br�
%&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz�����������������������������������������������������������������������������������a
�����a�w�!1AQaaq"2�B���� #3R�br�
Já rodei a internet toda, ou quase toda, testei todo tipo de código para envio do orquivo, transformação do arquivo físico em bytes[] mas nada funciona.
DETALHE: a rotina que uso para passar o arquivo ara o cliente é a mesma usada para passar um relatório em outra tela e funciona.
talvezpossa ser algum erro na página, alguma coifiguração ninja misteriosa em algum canto perdido.
quem puder ajuda ae plz.
abraço.
seguem os códigos:
File f = new File(this.dirCertificados + fileName + ".jpg");
if (f.exists()) {
downloadImageFromFile(f);
[code]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());
}
[/code]
[code]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();
}
[/code]