まず第一に、私の英語が下手であることを許してください。ajax を使用して ExportServlet にデータを送信する際に問題が発生しています。
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 コードがあります (例として filename を使用しました)。
//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>
実際、リンクをクリックすると、「null.txt」を含む ZIP ファイルが取得されます。どうすればこれを修正できますか?
よろしくお願いします!