Descargar un archivo .XLS o .PDF con JSF


Hola había tenido problemas al tratar de descargar un archivo desde el servidor, para que sea visualizado en los computadores clientes del sistema usando JSF, pero buscando un poco por allí pude encontrar como hacerlo, este método sirve para descargar archivos *.XLS y *.PDF con los que he probado, pero me imagino que debe funcionar para cualquier tipo de archivo, lo importante es reconocer que MIME Type tiene este archivo eso lo podremos encontrar en esta página.

File ficheroXLS = new File(strPathXLS);
FacesContext ctx = FacesContext.getCurrentInstance();
FileInputStream fis = new FileInputStream(ficheroXLS);
byte[] bytes = new byte[1000];
int read = 0;

if (!ctx.getResponseComplete()) {
   String fileName = ficheroXLS.getName();
   String contentType = "application/vnd.ms-excel";
   //String contentType = "application/pdf";
   HttpServletResponse response =(HttpServletResponse) ctx.getExternalContext().getResponse();
   response.setContentType(contentType);
   response.setHeader("Content-Disposition","attachment;filename=\"" + fileName + "\"");
   ServletOutputStream out = response.getOutputStream();

   while ((read = fis.read(bytes)) != -1) {
        out.write(bytes, 0, read);
   }

   out.flush();
   out.close();
   System.out.println("\nDescargado\n");
   ctx.responseComplete();
}

Saludos christmo

16 comentarios en “Descargar un archivo .XLS o .PDF con JSF

  1. sergio dijo:

    Perdòn, no entendì. Mi problema es que quisiera bajar archivos de una biblioteca virtual. Estos archivos están en PDF y los quisiera imprimir o bien leer sin estar concetado…esto es posible…?
    Muchas gracias.

  2. David dijo:

    Saludos,

    Tengo una duda… espero me puedan ayudar.

    Que pasa cuando el usuario decide cancelar la descarga??? hay alguna menera de enterarse de eso y cancelar la descarga???

    En mi caso cuando un usuario hace una descarga automaticamente hay un contador que actualiza un registro en una tabla de BD, pero cuando cancela la descarga (desde el explorador o gestor de descarga) el registro no se debe actualizar.

    Gracias espero su respuesta.

  3. Nelly Johanna dijo:

    Mira muchas gracias… pero quisiera saber si hay que hacer algo en la jsf o manejar algun componente en especial debido a que cuando ejecuto el programa no hace nada pero tampoco sale error.. muchas gracias por tu pronta respuesta…

  4. Hola Christmo, te consulto porque no entiendo de código, lo que escribiste lo inserto en el head?. Mi archivo es un xls, mi idea es que quienes quieran lo puedan bajar haciendo click en “Descargar Planilla”. Como lo hago en mi html super puro?. Mil gracias !

    • Hola @Andrea veras todo este fragmento de código lo puedes poner en un boton de visual web de jsp o jsf, con ello podrás hacer la descarga del archivo a tu computador cliente desde el servidor…

      No sé si queda claro!!!…

      Saludos

      christmo

  5. Alberto dijo:

    Amigo te predutno como debe ser el formato de: strPathXLS

    He intentado de mil formas pero siempre, me aparece el error: El sistema no puede encontrar el archivo especificado

  6. NewInJsp dijo:

    El código funciona muy bien en mi PC, pero cuando lo subo al server no encuentra el archivo, siempre me marca que no encuentra la ruta especificada. ¿Cómo soluciono eso?

  7. eduardo dijo:

    una pregunta, estoy desarrollando un sistema en jsf.
    quiero descargar un archivo que está en mi servidor, pero debo usar jsf puro…!!!! en la primera lìnea de tu código: el strPathXLS es la rut donde se encuentra mi archivo en el servidor…?¿?¿? y el ficheroXLS es el fichero k kiero descargary lo obtengo de un request igual k en jsp…?¿?

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s