Buenas.
Estoy haciendo una página en jsp. Lo que quiero es que al pulsar en un botón de la página, se descarge un archivo.
El método que ejecuta el botón en el Bean es el siguiente:
Código:
public String downloadFile () throws FileNotFoundException, IOException
{
FacesContext context = FacesContext.getCurrentInstance();
HttpServletResponse response = (HttpServletResponse) context.getExternalContext().getResponse();
System.out.println ("Descargando archivo==>"+rutaArchivo);
response.setContentType("APPLICATION/OCTET-STREAM");
String disHeader = "Attachment;Filename=\"myFile.txt\"";
response.setHeader("Content-Disposition", disHeader);
// transfer the file byte-by-byte to the response object
File fileToDownload = new File(rutaArchivo);
FileInputStream fileInputStream = new FileInputStream(fileToDownload);
int i;
while ((i=fileInputStream.read())!=-1)
{
response.getOutputStream().write(i);
}
fileInputStream.close();
response.getOutputStream().close();
System.out.println ("fin descarga archivo");
return "success";
}
Cuando yo pulso en el botón, se abre el diálogo de descarga, y sí comienza a descargarse el archivo.
El problema está en que al abrir el archivo, no tiene el contenido que debiera tener, sino que su contenido es el codigo html de la jsp donde se encuentra el botón que ejecuta ese método.
¿Alguien sabe cual es la solución?
Saludos y gracias