我遇到问题,我用 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/