[英]Download file without refreshing the page using JSP/Servlet/Ajax
我有一個要從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循環的原因是將數百條記錄寫入文件,然后刷新它。 ..我要的是單擊下載按鈕時,應僅下載文件,而不重定向頁面。
這是一個函數:
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');
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.