2012-05-21 8 views
5

Necesito cargar dinámicamente imágenes dentro de un JSP. He intentado con <img src="servletUrl?p1=x&p2=y"/>, pero el problema es que la URL es demasiado larga para enviarse mediante GET.Imágenes generadas dinámicamente, tomadas usando POST

Ahora estoy realizando una llamada POST. Desde el servlet, estoy generando una imagen de gráfico circular, basada en los parámetros que envío. La imagen no se conserva, por lo que no puedo devolver algo como "images/image1.jpg" y configurar eso como src de la imagen.

Devuelvo la imagen como una matriz de bytes y establezco el tipo de contenido de imagen apropiado.

Mi pregunta es: una vez que tengo los bytes de la imagen en javascript, ¿cómo los visualizo en la etiqueta img correspondiente?

Esta es mi llamada AJAX:

new Ajax.Request(url, { 
     method: 'post', 
     parameters: params, 
     onComplete: function(request) { 
        alert(request.responseText);  
     } 
}); 
+0

¿Por qué la URL es demasiado larga? Eso parece un poco extraño ... – beerbajay

+0

hey, ¿puedes solucionarlo ... que ayudaría –

+0

@beerbajay: porque uno de los parámetros es un documento JSONized, con muchos campos. Es un documento que aún no se ha conservado y, según los valores que el usuario ingresa en los diversos campos, se genera un gráfico circular y se devuelve desde el servlet. – madalina

Respuesta

2

no he probar este mi auto pero debería funcionar. Puede crear una imagen y configurar su src usando dataUrl. Tendrá que convertir el byte[] en una cadena codificada en base64 para que esto funcione.

new Ajax.Request(url, { 
     method: 'post', 
     parameters: params, 
     onComplete: function(response) { 
      var img = new Image(); 
      img.src = "data:image/png;base64," + response; 

      document.body.appendChild(img); 
     } 
}); 
+0

gracias. tu respuesta resolvió las cosas para mí. :) – madalina

+0

Me alegro de poder ayudar :) – Andreas

0

Aquí está la solución de la parte superior de la cabeza, debería funcionar en todos los navegadores:

En lugar de AJAX y <img> etiqueta, utilice un precargada con el formulario con campos ocultos con todos los parámetros POST necesarios y con el controlador onload configurado para enviar este formulario al script de publicación de imágenes. Haga que este script devuelva la imagen pura que se mostrará en este iframe manteniendo intacto el resto de su página.

Cuestiones relacionadas