我有一個文件從servlet來dowmnload,我需要當用戶點擊下載按鈕,而不被頁面refreshed.Hiw我能實現這個下載。 這是我的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循環寫幾百記錄成文件,然後沖洗it..Nbow值得關注的是,當用戶點擊下載按鈕,頁面是試圖要重定向,但沒有servlet中的代碼重定向響應,所以爲什麼會發生這種情況..我想要的是當下載按鈕被點擊時,文件只應該被下載而沒有頁面被重定向。
好,並在你的Ajax代碼? – drgPP
我沒有使用AJAX這個,但是當我搜索網上的人說,Ajax是該解決方案的最好的一個,但不能得到確切的solution..So問你的人,我怎麼能做到這一點。 –
當servlet返回一個Content-Disposition:attachment響應時,頁面刷新/重定向是** not **缺省行爲。它應該徹底運作。你的問題是其他地方引起的遺憾的是,目前所提供的信息並不可見。要初始化根本原因,請創建[mcve]。至少絕對不需要過於複雜的基於Ajax的解決方案。 – BalusC