zoukankan      html  css  js  c++  java
  • SpringBoot+thymeleaf实现模板文件下载

    1.配置文件:
        pom.xml中添加依赖:
        <!-- thymeleaf模版 -->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-thymeleaf</artifactId>
            </dependency>
        application.yml文件中添加要下载的模板文件存放地址
    
        
        添加读取配置的模板存放地址

    2.前台代码
        <a href="javascript:downTemple()" style="color:#1c99ef;text-decoration:underline;">下载模板</a>
    
      function downTemple(){
           window.location.href="/UserController/downTemple";
       }
    3.后台代码
         @RequestMapping(value = "/downTemple")
        public String downTemple(HttpServletResponse response, RedirectAttributes redirectAttributes) {
             String fileName = "用户信息模板.xlsx";// 设置文件名,根据业务需要替换成要下载的文件名
             if (fileName != null) {
                 //设置文件路径
                 String realPath = configProperties.getExcelTemplateDpwloadPath();//这里使用配置类配置文件路径
                 File file = new File(realPath , fileName);
                 if (file.exists()) {
                     try {
                        response.setContentType("application/force-download");// 设置强制下载不打开
                        fileName =java.net.URLDecoder.decode(fileName,"UTF-8");
                        response.addHeader("Content-Disposition", "attachment;fileName=" +  new String(fileName.getBytes("GB2312"),"iso8859-1"));// 设置文件名 中文要编码后才可以
                     } catch (UnsupportedEncodingException e1) {
                        // TODO 自动生成的 catch 块
                        e1.printStackTrace();
                     }
                    
                     byte[] buffer = new byte[1024];
                     FileInputStream fis = null;
                     BufferedInputStream bis = null;
                     try {
                         fis = new FileInputStream(file);
                         bis = new BufferedInputStream(fis);
                         OutputStream os = response.getOutputStream();
                         int i = bis.read(buffer);
                         while (i != -1) {
                             os.write(buffer, 0, i);
                             i = bis.read(buffer);
                         }
                     } catch (Exception e) {
                         e.printStackTrace();
                     } finally {
                         if (bis != null) {
                             try {
                                 bis.close();
                             } catch (IOException e) {
                                 e.printStackTrace();
                             }
                         }
                         if (fis != null) {
                             try {
                                 fis.close();
                             } catch (IOException e) {
                                 e.printStackTrace();
                             }
                         }
                     }
                 }
             }
            return null;
        }
  • 相关阅读:
    类中静态方法
    子类执行父类的构造方法
    MySQL grant命令使用
    Jmeter中引入class文件的方法
    了解CSS/CSS3原生变量var (转)
    Vue 开源项目库汇总(转)
    史上最全常用正则表达式 (转)
    如何实现CSS限制字数,超出部份显示点点点...
    我的博客园第一篇文章......
    平衡二叉树,AVL树之图解篇
  • 原文地址:https://www.cnblogs.com/ljc1212/p/15020349.html
Copyright © 2011-2022 走看看