我有一个网站,以标准XMLHttpRequest的形式将数据发送到java servlet,如下所示
var xmlHttp = new XMLHttpRequest();
xmlHttp.open("POST", "/GraphingServlet/FC/ExportPng", false);
xmlHttp.send("some_data");
我的java servlet接收到这个请求,用二进制编码创建一个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();
通过萤火虫我看到我的网页收到了大量信息,但我没有下载弹出窗口。如何让网站提示用户将此png保存为" picture.png"收到http响应中编码的png后?
非常感谢帮助。
答案 0 :(得分: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();
}