后台流触发浏览器下载文件

------前端代码------


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的时候没有反应

你可能感兴趣的:(后台流触发浏览器下载文件)