首先,請原諒我,如果我的英語不好。我在使用ajax將數據發送到我的ExportServlet時遇到了一些問題。用ajax發佈數據到java servlet
ExportServlet.java
public class ExportServlet extends HttpServlet {
private static final long serialVersionUID = 6715605810229670146L;
protected void doGet(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {
String fileName = req.getParameter("filename");
//Create ZIP file
try {
res.setContentType("applicatin/zip");
res.setStatus(HttpServletResponse.SC_OK);
ZipOutputStream zos = new ZipOutputStream(res.getOutputStream());
//Create TXT file
zos.putNextEntry(new ZipEntry(fileName + ".txt"));
zos.write(getOutputData());
zos.closeEntry();
zos.close();
} catch (IOException e) {
e.printStackTrace();
}
}
private byte[] getOutputData() {
byte[] result = null;
String tmp = "Text file content";
result = tmp.getBytes();
return result;
}
}
Java代碼上述工程絕對完美。
然後我將數據發送到我的ExportServlet我的Ajax代碼(我用文件名爲例):
//Post data to ExportServlet
$.ajax({
type: 'post',
url: '/export.zip',
data: "filename = myFile",
success:function(data){alert(data);},
error:function(){alert('error');}
});
的問題是,當AJAX功能被觸發我得到一個錯誤回調。我也有一個鏈接,下載由ExportServlet生成的ZIP文件:
<a href="/export.zip">Download file</a>
事實上,當我點擊我得到的ZIP文件與它「null.txt」的鏈接。我怎樣才能解決這個問題?
非常感謝!
你只已經實現了'doGet'爲你的servlet,而不是'doPost'。 –
還有一件事:你不能用ajax觸發文件下載。想象一下,未經您許可,惡意服務器開始將文件和應用程序下載到您的計算機中。 –
是的,我知道,問題是,當我改變doGet做doPost我不能下載文件了(ahref不會工作)。 我不想觸發文件下載,我只是想觸發ExportServlet創建一個帶有Ajax的文件。然後當你點擊下載文件鏈接時,它會下載創建的文件。 – JasonK