JSP (Java Server Page) - Al generar fichero “txt”, en nombre no es el defin

 
Vista:

Al generar fichero “txt”, en nombre no es el defin

Publicado por Tonipepe (2 intervenciones) el 21/10/2004 12:02:16
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");
}
%>

Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE: Hay que aumentar el tamaño del buffer

Publicado por Tonipepe (2 intervenciones) el 22/10/2004 12:06:39
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

Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar