------前端代码------
<iframe id="spb" src="" style="width: 1px;height: 1px;" frameborder="0"></iframe>
function downLoad(spzt,spbUrl,downloadPerson,orderId){
$.get("beforeDownload",{},function (data) {
$("#spb").attr("src","download");
})
}
思路就是将下载的后台请求地址指向页面中iframe的src,即触发下载
//下载前置空请求
@ResponseBody
@RequestMapping("beforeDownload")
public void beforeDownload(HttpServletRequest req,HttpServletResponse resp,String orderId) throws IOException {
}
//执行下载
@ResponseBody
@RequestMapping("download")
public void download(HttpServletRequest req,HttpServletResponse resp) throws IOException {
// 输出到浏览器(下载)
OutputStream out = null;
try {
// 这种写法是服务器上用的,因为要把文件下载到本地,只要确定文件名称即可,会让用户自己选择保存在本机的哪个地方
String userAgent = req.getHeader("User-Agent");
// 针对IE或者以IE为内核的浏览器:
String fileName = "spb.doc";
resp.setContentType("application/msword");//若为excel(application/msexcel)
resp.setHeader("Content-disposition", "attachment;filename=" + fileName);
out = resp.getOutputStream();
doc.write(out);
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
out.flush();
out.close();
} catch (Exception e) {
}
}
}
2019年11月1日
注意:放入src属性的url必须加http,今天又用了该方式下载,发现没有加http的时候没有反应