gpt4 book ai didi

javascript - 使用JSP/Servlet/Ajax下载文件而不刷新页面

转载 作者:行者123 更新时间:2023-11-28 10:48:19 26 4
gpt4 key购买 nike

我有一个要从 servlet 下载的文件,当用户单击下载按钮而不刷新页面时我需要下载它。嗨,我可以实现这一点吗?这是我的jsp代码。我允许用户通过在搜索框中输入凭据来下载文件。所以我的文件搜索逻辑在servlet中。

<form action="Download_Servlet" class="download" method="post">     
Search:<input type="text" name="dropdown" id="datedropdown">
<input type="submit" id="downloadRecords" value="Download">

这是我的 servlet 代码

response.setContentType("application/octet-stream");
response.setHeader("Content-Disposition","attachment;filename=abc.csv");
ServletOutputStream out = res.getOutputStream();
for (Order traverse : orderMap.values())
{
out.write(traverse.toString().getBytes());
out.write("\n".getBytes());
out.flush();
}

使用 for 循环的原因是将数百条记录写入文件,然后刷新它。.Nbow 的问题是当用户单击下载按钮时页面尝试重定向,但 servlet 中没有用于重定向响应的代码,所以为什么这种情况正在发生..我想要的是当单击下载按钮时,仅应下载文件而不重定向页面。

最佳答案

这是一个函数:

function ajax_download(url, data) {
var $iframe,
iframe_doc,
iframe_html,
input_name;

if (($iframe = $('#download_iframe')).length === 0) {
$iframe = $("<iframe id='download_iframe'" +
" style='display: none' src='about:blank'></iframe>"
).appendTo("body");
}

iframe_doc = $iframe[0].contentWindow || $iframe[0].contentDocument;

if (iframe_doc.document) {
iframe_doc = iframe_doc.document;
}

iframe_html = "<html><head></head><body><form method='POST' action='" +
url +"'>" +
"<input type=hidden name='" + input_name + "' value='" +
JSON.stringify(data) +"'/></form>" +
"</body></html>";

iframe_doc.open();
iframe_doc.write(iframe_html);
$(iframe_doc).find('form').submit();
}

用法:

$(document).on('click', '#download_button_id', function(){
ajax_download('http://www.mridulahuja.com/uploads/1/3/8/6/13860206/handy_notes_v2.0.rar');
});

关于javascript - 使用JSP/Servlet/Ajax下载文件而不刷新页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39117078/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com