2012-05-21 5 views
5

동적으로 이미지를 JSP 내에서로드해야합니다. <img src="servletUrl?p1=x&p2=y"/>을 시도했지만 문제는 URL이 너무 길어 GET을 사용하여 보낼 수 없다는 것입니다.POST를 사용하여 동적으로 생성 된 이미지

이제 POST 호출을 수행하고 있습니다. 서블릿에서 보낸 매개 변수를 기반으로 원형 차트 이미지를 생성합니다. 이미지가 지속되지 않으므로 "images/image1.jpg"와 같은 것을 반환 할 수 없으며 이미지의 src로 설정할 수 없습니다.

그래서 이미지를 바이트 배열로 반환하고 적절한 이미지 내용 유형을 설정합니다.

제 질문은 자바 스크립트에서 이미지 바이트를 가져 왔으면 어떻게 해당 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

. dataUrl을 사용하여 이미지를 만들고 src를 설정할 수 있습니다. 이 작업을 수행하려면 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> 태그 사용을 <iframe> 프리 필드 필요한 모든 POST 매개 변수를 사용하여 숨겨진 필드를 양식하고 onload 처리기가이 양식을 이미지 제공 스크립트에 제출하도록 설정했습니다. 이 스크립트가 페이지의 나머지 부분을 그대로 유지하면서이 iframe에 표시 될 순수한 이미지를 반환하도록합니다.

관련 문제