2012-05-21 14 views
5

Ho bisogno di caricare dinamicamente le immagini all'interno di un JSP. Ho provato il <img src="servletUrl?p1=x&p2=y"/>, ma il problema è che l'URL è troppo lungo per essere inviato utilizzando GET.Immagini generate dinamicamente, recuperate usando POST

Ora sto eseguendo una chiamata POST. Dal servlet sto generando un'immagine del grafico a torta, basata sui parametri che invio. L'immagine non è persistente, quindi non posso restituire qualcosa come "images/image1.jpg" e impostarla come src dell'immagine.

Quindi sto restituendo l'immagine come una matrice di byte e impostando il tipo di contenuto dell'immagine appropriato.

La mia domanda è: una volta che ho i byte dell'immagine in javascript, come li visualizzo nel tag img corrispondente?

Questa è la mia chiamata AJAX:

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

Perché l'URL è troppo lungo? Sembra strano ... – beerbajay

+0

hey, puoi armarti fuori ... sarebbe d'aiuto –

+0

@beerbajay: perché uno dei parametri è un documento JSONized, con molti campi. È un documento che non è ancora persistente e in base ai valori che l'utente inserisce nei vari campi viene generato un piechart e restituito dal servlet. – madalina

risposta

2

non ho provare questo la mia auto ma dovrebbe funzionare. È possibile creare un'immagine e impostarne l'src utilizzando dataUrl. Dovrai convertire lo byte[] in una stringa codificata in base 64 affinché funzioni.

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

grazie. la tua risposta ha risolto le cose per me. :) – madalina

+0

Sono felice di poter aiutare :) – Andreas

0

Ecco la soluzione dalla parte superiore della testa, dovrebbe funzionare in tutti i browser:

Invece di AJAX e <img> tag, utilizzare un pre-riempita con form con campi nascosti con tutti i parametri POST necessari e con il gestore onload impostato per inviare questo modulo allo script di pubblicazione di immagini. Rendi questo script restituisca l'immagine pura che verrà visualizzata in questo iframe mantenendo intatto il resto della pagina.

Problemi correlati