2012-05-21 2 views
5

Мне нужно динамически загружать изображения внутри JSP. Я пробовал <img src="servletUrl?p1=x&p2=y"/>, но проблема в том, что URL-адрес слишком длинный для отправки с использованием GET.Динамически сгенерированные изображения, полученные с помощью POST

Теперь я выполняю POST-вызов. Из сервлета я создаю изображение круговой диаграммы, основываясь на параметрах, которые я отправляю. Изображение не сохраняется, поэтому я не могу вернуть что-то вроде «images/image1.jpg» и установить его как src изображения.

Итак, я возвращаю изображение в виде байтового массива и устанавливаю соответствующий тип содержимого изображения.

Мой вопрос: однажды у меня есть байты изображения в javascript, как их отобразить в соответствующем теге img?

Это мой AJAX вызов:

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

Почему URL слишком длинный? Это кажется немного странным ... – beerbajay

+0

эй, не могли бы вы это выпустить ... это помогло бы –

+0

@beerbajay: потому что один из параметров - это JSONized-документ с большим количеством полей. Это документ, который еще не сохранен и основан на значениях, которые пользователь вводит в различные поля, генерируется и возвращается из сервлета. – madalina

ответ

2

Я не попробовать это мой сам, но он должен работать. Вы можете создать изображение и установить его src с помощью dataUrl. Вам нужно будет преобразовать byte[] в строку с кодировкой base64, чтобы это работало.

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

спасибо. ваш ответ решил для меня все. :) – madalina

+0

Я рад, что смог помочь :) – Andreas

0

Вот решение от верхней части моей головы, должны работать во всех браузерах:

Вместо того, AJAX и <img> тега, используйте предварительно заполнены формами со скрытыми полями со всеми необходимыми параметрами Столба и с обработчиком onload, чтобы отправить эту форму в графический сервисный скрипт. Сделайте этот сценарий возвращенным чистым изображением, которое будет отображаться в этом iframe, оставив остальную часть вашей страницы неповрежденной.

Смежные вопросы