下载模板

@GetMapping("/downloadTemplate")
@ApiOperation(value = "下载模板信息(1事件,2台账,3重建)", response = Result.class)
public void downloadTemplate(@ApiParam(required = true, value = "param", name = "param") @RequestParam(name = "param") String param,
                             HttpServletRequest request, HttpServletResponse response) throws IOException {
    String fileName = "eventTemplate";
    if(param != null) {
        if ("2".equals(param)){
            fileName = "houseTemplate";
        }else if("3".equals(param)){
            fileName = "rebuildTemplate";
        }
    }
    fileName = fileName + ".xlsx";
    //String fileUrl = ClassUtils.getDefaultClassLoader().getResource("template").getPath()+ "/" + fileName;
    InputStream fis =this.getClass().getResourceAsStream("/template/" + fileName);
    downFile(fis,fileName,response);

/*OutputStream toClient = null;
    try {
        //File file = new File(fileUrl);
        //InputStream fis = new BufferedInputStream(new FileInputStream(fileUrl));
        byte[] buffer = new byte[fis.available()];
        fis.read(buffer);
        fis.close();
        response.reset();
        //判断是否是IE11
        Boolean flag= request.getHeader("User-Agent").indexOf("like Gecko")>0;
        if (request.getHeader("User-Agent").toLowerCase().indexOf("msie") >0||flag){
            fileName = URLEncoder.encode(fileName, "UTF-8");//IE浏览器
        }else {
            //先去掉文件名称中的空格,然后转换编码格式为utf-8,保证不出现乱码,
            //这个文件名称用于浏览器的下载框中自动显示的文件名
            fileName = new String(fileName.replaceAll(" ", "").getBytes("UTF-8"), "ISO8859-1");
            //firefox浏览器
            //firefox浏览器User-Agent字符串:
            //Mozilla/5.0 (Windows NT 6.1; WOW64; rv:36.0) Gecko/20100101 Firefox/36.0
        }

        response.setContentType("application/vnd.ms-excel;charset=GBK");
        response.addHeader("Content-Disposition", "attachment;filename=\"" + fileName + "\"");
        response.setContentLength(fis.available());
        toClient = new BufferedOutputStream(response.getOutputStream());
        toClient.write(buffer);
    } finally {
        if (toClient != null) {
            toClient.flush();
            toClient.close();
        }
    }*/
}

public static void downFile(InputStream resource,String fileName,HttpServletResponse response){
    byte[] buffer = new byte[1024];
    InputStream inputStream = null;
    BufferedInputStream bis = null;
    OutputStream os = null; // 输出流
    try {
        // 根据文件地址,获取一个文件输入流
        inputStream = resource;
        // 设置返回文件信息
        response.setContentType("application/octet-stream;charset=UTF-8");
        response.setCharacterEncoding("UTF-8");
        response.setHeader("Content-Disposition",
                "attachment;fileName=" + java.net.URLEncoder.encode(fileName, "UTF-8"));
        // 将内容使用字节流写入输出流中
        os = response.getOutputStream();
        bis = new BufferedInputStream(inputStream);
        int i = bis.read(buffer);
        while (i != -1) {
            os.write(buffer, 0, i);
            i = bis.read(buffer);
        }
    } catch (FileNotFoundException e) {
        // log.error("下载资源未找到异常,e",e);
        e.printStackTrace();
        System.out.println(e.getMessage());
    } catch (IOException e) {
        // log.error("IO流异常,e",e);
        e.printStackTrace();
        System.out.println(e.getMessage());
    } finally {
        // 关闭流信息
        try {
            if (inputStream != null) {
                inputStream.close();
            }
            if (bis != null) {
                bis.close();
            }
            if (os != null) {
                os.flush();
                os.close();
            }
        } catch (IOException e) {
            // log.error("关闭流出现异常,e:",e);
            e.printStackTrace();
            System.out.println(e.getMessage());
        }
    }
}

模板文件位于 工程名\src\main\resources\template\

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值