El Guru Programador
Usuario DESCONOCIDO | Registrate Gratis | Usuarios Registrados
Foro de Java
Foros del Guru > Java
Usuario Al generar fichero “txt”, en nombr...
Desconocido
Enviado - 21/10/2004
 
Hola:
Tengo un jsp en que seleccionamos los valores de los parámetros, con los cuales se realiza una búsqueda en la BBDD, y la respuesta se pasa como parámetro a otro jsp, el cual crea un fichero temporal que el usuario puede abrir o guardar, siendo el nombre del fichero definido en el jsp con extensión “txt. Utilizo Struts.
El problema es que funciona correctamente excepto en una da las casuísticas de la selección del primer jsp. Que en vez de utilizar el nombre definido para el fichero, utiliza el definido en el “action path” de struts “*.do”, siendo la información correcta.
El código es el siguiente. El nombre del fichero que muestran las trazas es el correcto. Podéis comprobar que también he probado meter en un String el valor de Content-Disposition, pero el resultado es el mismo.

<%

String nombreFichero=reglamento+strArea+str2ano+mes+".txt";
System.out.println("A) Nombre del Fichero: " + nombreFichero);

if(error!=null){%>
…..
<%}else{
response.setContentType("txt/plain");
%><%=request.getAttribute("fichero").toString().trim()%><%
//String contentDisposition = "attachment;filename=" + nombreFichero;
System.out.println("B) Nombre del Fichero: " + nombreFichero);
response.setHeader("Content-Disposition", "attachment;filename=" + nombreFichero);
System.out.println("C) Nombre del Fichero: " + nombreFichero);
response.setHeader("Pragma","no-cache");
}
%>

 
Desconocido
Enviado - 22/10/2004
 
Hola a Todos: :
He dado con la solución. El problema es que el tamaño del buffer del response es por defecto de 8192, por lo que hay que aumentarlo. Para realizarlo existe el método setBufferSize(int nuevoTamano), con lo que poniéndolo delante del método setContentType, con el nuevo tamaño, se soluciona el problema. por ejemplo:

response.setBufferSize(65536);
response.setContentType("txt/plain");
%><%=request.getAttribute("fichero").toString().trim()%><%
response.setHeader("Content-Disposition", "attachment;filename=" + nombreFichero);

No intentéis restablecer al buffer a 8192, ya que cortaría el contenido del txt.


Gracias a todos
 
 

 

Contactos myStudio Network