Inicio > Java, Programación > Como forzar descarga de archivos

Como forzar descarga de archivos

Esto resultó luego de un poco de lectura y prueba y error en el proyecto BChile de Excelsys.

Sucede que tratando de solucionar un problema de vulnerabilidad en el generador de informes (solucionado dicho sea de paso),  salió al baile el “cómo” visualizar dichos informes (en pdf). 3 de 4 exploradores se comportaron como deberían (FF, Chrome y Safari), sin embargo, como siempre IE6 dio problemas. Se seteo el Content Type del Servlet de la siguiente manera:

response.setContentType("application/force-download");

Sin embargo, no solucionaba el problema en IE6. Averiguando un poco más llegué a estas páginas

http://support.microsoft.com/kb/260519

http://www.javadocexamples.com/javax/servlet/http/HttpServletResponse/addHeader%28String%20name,String%20value%29.html

Donde se mostraba la cabecera especifica para forzar la descarga.

Luego, para implementar en servlet Java el código es el siguiente

private void generatePDFOutput(HttpServletResponse response)
throws IOException {

byte[] bytes = null;
/*........*/
response.setContentType("application/octet-stream");
response.setContentLength(bytes.length);
response.addHeader("Content-Disposition", "attachment; filename=" + _reportName+ "." + "pdf");
//response.addHeader("filename","_reportName"+ "." + PDF_FORMAT);
ServletOutputStream ouputStream = response.getOutputStream();
ouputStream.write(bytes, 0, bytes.length);
ouputStream.flush();
ouputStream.close();

}

Con esto se logra forzar en todos los navegadores (incluido IE6) el diálogo de descarga, para así evitar posibles problemas de visualización del documento.

Demás está decir que esto es aplicable a varios tipos de archivo, considerando el comportamiento por defecto que tiene IE X para los archivos con extensiones “microsoft”

Saludos

Advertisement
Categorías:Java, Programación
  1. Aún no hay comentarios.
  1. Aún no hay trackbacks

Deja un comentario

Fill in your details below or click an icon to log in:

Logo de WordPress.com

You are commenting using your WordPress.com account. Log Out / Cambiar )

Twitter picture

You are commenting using your Twitter account. Log Out / Cambiar )

Facebook photo

You are commenting using your Facebook account. Log Out / Cambiar )

Connecting to %s

Seguir

Get every new post delivered to your Inbox.