Todo funciona bien, pero solo si el archivo es pequeño, aproximadamente 1MB, cuando lo probé con archivos más grandes, como 20MB mi navegador lo muestra, en lugar de forzar la descarga, intenté muchos encabezados hasta ahora, ahora mi código se ve:Cómo forzar al navegador a descargar el archivo?
PrintWriter out = response.getWriter();
String fileName = request.getParameter("filename");
File f= new File(fileName);
InputStream in = new FileInputStream(f);
BufferedInputStream bin = new BufferedInputStream(in);
DataInputStream din = new DataInputStream(bin);
while(din.available() > 0){
out.print(din.readLine());
out.print("\n");
}
response.setContentType("application/force-download");
response.setContentLength((int)f.length());
response.setHeader("Content-Transfer-Encoding", "binary");
response.setHeader("Content-Disposition","attachment; filename=\"" + "xxx\"");//fileName);
in.close();
bin.close();
din.close();
Configurando el tipo de contenido debería hacerlo. ¿Qué navegador es? –
¿Qué navegador? Octet-stream debería ser la respuesta correcta, pero las versiones anteriores de IE solían intentar "olfatear" el tipo de contenido independientemente de lo que el servidor web le decía – Paolo
chrome, ff 3.6, y cualquier otro probablemente ... – dieeying