簡體   English   中英

使用JSP / Servlet / Ajax下載文件而無需刷新頁面

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM