在Ajax调用后从Java下载ZIP
我遇到了一个问题,我用JAVA创建了一个包含PDF文件的ZIP文件在Ajax调用后从Java下载ZIP,java,javascript,ajax,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
@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);
}
@覆盖
@应答器
@RequestMapping(value=“pdfDownload”,method=RequestMethod.POST,products=“application/zip”)
公共字节[]generatePDFs(
@RequestParam(value=“date”,required=true)字符串日期,
校长,
HttpServletResponse(响应){
字符串文件名;
PrintRequest pr=新的PrintRequest();
List pis=newarraylist();
pis.add(“3453535”);
pr.setDate(“2015年3月”);
pr.setPids(pis);
filename=pr.getDate()+“.zip”;
response.setContentType(“应用程序/zip”);
response.setHeader(“内容处置”、“附件;文件名=“+filename”);
返回createZip(请购单、委托人);
}
创建ZIP文件可以很好地工作,但是如果我用jQueryAjaxPost调用它,我会得到比特流,但无法下载该文件
顺便说一句,文件是动态创建的,不在服务器上
希望有人能帮助我
致以最良好的祝愿 如果您在ajax调用中请求此方法,则生成的bytestream将位于javascript中的result对象中。那根本没用 您根本不应该在ajax调用中这样做。生成一个指向请求url的普通html链接,或者用javascript构建url并将其放入
window.location
如果您需要发送帖子,那么制作一个html表单并发布它。您可以使用javascript填充数据,然后调用
submit()
。查看此处了解更多详细信息:好的,谢谢,但我需要添加一个POST参数,因为我必须发送ID列表来创建zip文件。啊,太糟糕了,我没有想到这一点。:)但无论如何,谢谢你,我建议你把这个zip文件暂时存储在服务器上,并在ajax调用后获得一个链接供下载。