En este grupo En todos

Foro de Struts



Problema con imagen en struts

Mercedes
Ingeniero en informática universidad c...
Escrito por Mercedes Bernal
el 23/05/2008

Buenos días.

Llevo ya tiempo intentando solucionar un problema sin éxito, por eso me decido a escribir aquí, haber si alguien me puede echar una mano.

Resulta que estoy intentando cargar una imagen a través de un action de struts, pero no lo consigo, me sale un aspa..

Tengo una imagen en una jsp en una capa oculta, y mediante javascript, cambio el atributo src de la imagen, por la url del action de struts. En el action lo que hago es crear la imagen, en concreto un gráfico, y escribirlo en el outputstream.

Espero que alguien me haya entendido lo que quiero hacer y me pueda decir algo.. Sino no me importan otras alternativas para hacer esto. Si alguien quiere puedo postear el código si es útil para poder encontrar el error.

Muchas gracias

Un saludo a todos

Ivan
Madrid, España
Escrito por Ivan
el 28/05/2008

Hola,

El problema que tienes es que al utilizar un outputstream, la salida es binaria y por tanto no cumple ningún encode, es decir, la jsp si cumple un encode, normalmente UTF-8, y por eso no se muestra la imagen.

Me explico, tienes dos maneras de escribir la salida de un servlet (en tu caso action), con un printwriter o con un outputstream, con la primera podrás escribir cumpliendo un encode (texto para que me entiendas) y con la segunda es en binario. Si utilizas el outputstream, no cumples con el encode de la jsp.

Resumiendo que esa imagen tendrás que mostrarla en una ventana distinta al jsp, porque no podrás mostrarla en la misma. Es mejor que incluyas la opción de descargar la gráfica en lugar de querer mostrarla directamente porque no vas a poder.

Un saludo.

Mercedes Bernal
Ingeniero en informática universidad c...
Escrito por Mercedes Bernal
el 08/08/2008
Gracias por responder Iván.

Como solución temporal lo que he hecho ha sido una vez creada la gráfica con JFreeChart en el action, la guardo en un archivo y luego pongo response. SetType("image/jpeg") y entonces se abre una típica ventana de abrir/guardar.

Pero lo que pasa es que esto tarda un poco y me gustaría poderlo hacer de otra forma.

Bien se me ha ocurrido tras lo que me comentas y algunas cosas que he leido por la web, que despues de guardar la imagen en un fichero, lo abro y lo leo byte a byte mediante un buffer, pero no sé cómo puedo devolver esto o transformalo o si ni siquiera es posible..

Muchas gracias de todas formas!

Un saludo