2014-03-27 2 views
1

내가다운로드 된 png 파일 후 XMLHttpRequest를 POST

var xmlHttp = new XMLHttpRequest(); 
xmlHttp.open("POST", "/GraphingServlet/FC/ExportPng", false); 
xmlHttp.send("some_data"); 

내 자바 서블릿 접수가이 요청을 다음과 같이 자바 서블릿 표준 XMLHttpRequest의 형태로 데이터를 전송하는 웹 사이트가 바이너리 인코딩의 PNG를 만들고 이 다시 웹 사이트에 PNG로 내 웹 페이지 정보의 전체 많이 접수에 볼 불을 지르고 통해 다음과 같은

response.setContentType("image/png"); 
response.setHeader("Content-Disposition","attachment; filename=\"picture.png\""); 
response.setHeader("Content-Transfer-Encoding", "binary"); 
ServletOutputStream out = response.getOutputStream(); 
out.write(byte_array_of_binary_encoded_png); 
out.flush(); 

의 라인을 따라 뭔가를하고 있지만 더 다운로드 팝업을 얻을 보냅니다. http 응답 내에서 인코딩 된 png를 수신하면이 png를 "picture.png"로 저장하라는 웹 사이트를 어떻게 표시합니까?

도움을 주시면 감사하겠습니다.

답변

0

AJAX를 통해 파일을 다운로드 할 수 없습니다.

HTML :

<button type="button" onclick="download()">Donwload</button> 

<form name="downloadForm" action="/GraphingServlet/FC/ExportPng" 
    method="post" target="secretFrame" style="display: none;"> 
    <input type="hidden" id="param1" name="param1"> 
    <input type="hidden" id="param2" name="param2"> 
</form> 

<iframe name="secretFrame" style="display: none;"></iframe> 

JS 그러나 다음과 같은 작업을 수행 할 수 있습니다

function download() { 
    document.getElementById("param1").value = "some_data"; 
    document.getElementById("param2").value = "some_data"; 
    document.forms["downloadForm"].submit(); 
} 
+0

이 큰 일! 감사. 숨겨진 iFrame의 목적이 무엇인지 명확하게 설명해 주시겠습니까? –

+0

목적은 현재 페이지의 내용을 변경하거나 새 브라우저 탭을 만드는 것이 아닙니다. –

관련 문제