1

まず第一に、私の英語が下手であることを許してください。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 ファイルが取得されます。どうすればこれを修正できますか?

よろしくお願いします!

4

2 に答える 2