java - Ajax 调用后从 Java 下载 ZIP

标签 java javascript ajax

我遇到问题,我用 JAVA 创建了一个包含 PDF 文件的 ZIP 文件

@Override
@ResponseBody
@RequestMapping(value = "pdfDownload", method = RequestMethod.POST, produces = "application/zip")
public byte[] generatePDFs(
        @RequestParam(value = "date", required = true) String date,
        Principal principal,
        HttpServletResponse response) {

    String filename;
    PrintRequest pr = new PrintRequest ();
    List<String> pis = new ArrayList<> ();
    pis.add ("3453453535");
    pr.setDate ("032015");
    pr.setPids (pis);

    filename = pr.getDate () + ".zip";
    response.setContentType ("application/zip");
    response.setHeader("Content-Disposition", "attachment; filename="+ filename);

    return createZip (pr, principal);
}

创建 ZIP 文件工作正常,但如果我使用 jQuery AJAX POST 调用它,我会返回比特流作为结果,但无法下载文件。

顺便说一句。该文件是动态创建的,并不位于服务器上。

希望有人能帮助我。

最诚挚的问候!

最佳答案

如果您在 ajax 调用中向此方法发出请求,则生成的字节流将位于 javascript 的结果对象中。这根本没用。

您根本不应该在 ajax 调用中执行此操作。要么生成一个指向请求 url 的普通 html 链接,要么在 javascript 中构建 url 并将其放入 window.location 中。

如果您需要发送 POST,请制作一个 html 表单并发布。您可以使用 JavaScript 填充数据,然后调用 submit()。查看此处了解更多详细信息:JavaScript post request like a form submit

关于java - Ajax 调用后从 Java 下载 ZIP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28584823/

相关文章:

java - java中的二维数组用于遍历行

java - 我如何用正则表达式解析这个字符串?

javascript - 我想连接 react 和 firebase

javascript - 如何只下载/读取文件的前 80KB?

javascript - 如何自动完成带有城市和州的表单字段?

javascript - Ajax 登录仅刷新记录的 div

java - 用于检查 "unseriousness"的应用程序/脚本可能吗?

java - 在java中读取大型xls文件(有7-8张,每张有30-40,000行)

javascript - 如何更改 TreeGrid 中的叶子图标

javascript - 压缩文件(客户端)并上传