Problemas en descargar un archivo desde servidor web
Hola, tengo el siguiente codigo. No puedo descargar un archivo desde mi servidor web, si alguien me da una mano utiliso jsf y primefaces, no me arroja ningun error pero tampoco se abre el recuadro de descarga
Este es mi codigo
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.Serializable;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.context.FacesContext;
import javax.servlet.ServletContext;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletResponse;
@ManagedBean
@SessionScoped
public class DownloadBean implements Serializable {
private static final long serialVersionUID = 1L;
public void cbDescargar() throws IOException {
FacesContext ctx;
ServletContext request;
File archCSV;
FileInputStream fisArch;
byte[] bytes;
int leer = 0;
String nombreArchivo;
ctx = FacesContext.getCurrentInstance();
request = (ServletContext) ctx.getExternalContext().getContext();
archCSV = new File(request.getRealPath("/reports/reporte.pdf"));
fisArch = new FileInputStream(archCSV);
bytes = new byte[1000];
if (!ctx.getResponseComplete()) {
nombreArchivo = archCSV.getName();
String contentType = "application/pdf";
HttpServletResponse response = (HttpServletResponse) ctx.getExternalContext().getResponse();
response.setContentType(contentType);
response.setHeader("Content-Disposition","attachment;filename=\"" + nombreArchivo + "\"");
ServletOutputStream out = response.getOutputStream();
System.out.println("leer " + leer);
while ((leer = fisArch.read(bytes)) != -1) {
out.write(bytes, 0, leer);
}
out.flush();
out.close();
System.out.println("\nDescargado...\n");
ctx.responseComplete();
}
}
}
el archivo que estoy descargando es un pdf
- Inicie sesión o regístrese para enviar comentarios
Puede ser que
Puede ser que
ctx.getResponseComplete()
esté devolviendo true y no entra al cuerpo del if.Intenta:
1) Ver si el método se está ejecutando en primer lugar?
2) Ver que esté entrando al if?
3) Ver que puedas escribir algo? cualquier cosa ( en vez de leer directamente el archivo escribe un "hola" al outputstream ) como en:
4) Ver que el archivo que quieres enviar exista?