@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\