descargar archivos

marypaz
02 de Noviembre del 2007
Hola a todos.....quisiera saber como hago para permitir descargar archivos que no son .zip desde una página, lo que sucede es que en la aplicación un usuario solicita generar unos archivos sobre información almacenada en la base de datos y luego debe poder descargarlos a su equipo, el generarlos no es problema el problema es como le permito descaergarlos si con hipervinculos lo que hace es que los abre en la página cosa que yo se no sucede con los .zip...........por fa\' ayudenme, me urge encontrar la solución

geobasis
02 de Noviembre del 2007
Para logra eso utiliza un codigo como este en el JSP, este no deve devolver nada mas:

FileInputStream archivo = new FileInputStream(Pathdelarchivo);
int longitud = archivo.available()
byte[] datos = new byte[longitud];
archivo.read(datos);
archivo.close();

response.setContentType("application/octet-stream"); // Aqui le dices que lo que viene es un OctectStream para que no abra ninguna aplicación
response.setHeader("Content-Disposition","attachment;filename = pathdelarchivo,size=longitud"); //Verifica la sintaxis no lo recuerdo exactamente,estos son los datos que aparecen en el cuadro de dialogo de descarga de archivos en el browser

response.write(datos);
response.flush();
response.close();

puedes encontrar mas informacion en http://support.microsoft.com/default.aspx/kb/260519

marypaz
02 de Noviembre del 2007
oye resulta que el response no tiene ninguno de estos metodos que mencionas y pues al correr el jsp me salen errores.
Yo intente con obtener un ServletOutputStream con: response.getServletOutputStream(); por que es que este si tiene los 3 metodos que mencionas, sin embargo tampoco funciono, porque el error entonces dice:
java.lang.IllegalStateException: getOutputStream() has already been called for this response
response.write(datos);
response.flush();
response.close();
Por fa.....que debo hacer, ya no se me ocurre que.....ayudame

No funciona - correcci?
02 de Noviembre del 2007
oye resulta que el response no tiene ninguno de estos metodos que mencionas:
response.write(datos);
response.flush();
response.close();
y pues al correr el jsp me salen errores.
Yo intente con obtener un ServletOutputStream con: response.getServletOutputStream(); por que es que este si tiene los 3 metodos que mencionas, sin embargo tampoco funciono, porque el error entonces dice:
java.lang.IllegalStateException: getOutputStream() has already been called for this response

Por fa.....que debo hacer, ya no se me ocurre que.....ayudame