diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/TemplateController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/TemplateController.java new file mode 100644 index 0000000..3833f1c --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/TemplateController.java @@ -0,0 +1,59 @@ +package com.casic.missiles.modular.system.controller; + +import com.casic.missiles.config.properties.CasicProperties; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestParam; + +import javax.servlet.ServletException; +import javax.servlet.http.HttpServletResponse; +import java.io.File; +import java.io.FileInputStream; +import java.io.IOException; + +@Controller +public class TemplateController { + private static Logger logger = LoggerFactory.getLogger(TemplateController.class); + + @Autowired + private CasicProperties path; + + @GetMapping("/template/download") + public void doPost(@RequestParam("filename") String filename, HttpServletResponse response) + throws ServletException, IOException { + File file = new File(path.getExportTempPath(), filename); + // 获取文件名 + String fileName = null; + if (filename.contains("/")) { + fileName = filename.substring(filename.lastIndexOf("/") + 1); + } else { + fileName = filename; + } + + // 设置以流的形式下载文件,这样可以实现任意格式的文件下载 + response.setContentType("application/octet-stream"); + response.addHeader("Content-Disposition", " attachment;filename=" + fileName); + response.setContentLength((int) file.length()); + + FileInputStream fis = null; + try { + fis = new FileInputStream(file); + byte[] buffer = new byte[1024]; + int readTmp = 0; + while ((readTmp = fis.read(buffer)) != -1) { + response.getOutputStream().write(buffer, 0, readTmp); + } + } catch (Exception e) { + logger.info(e.getMessage()); + e.printStackTrace(); + } finally { + response.getOutputStream().flush(); + response.getOutputStream().close(); + fis.close(); + } + } + +}