一. 场景介绍

  • Excel模板静态资源在,应用中的static文件夹中,文件名称包含中文;
  • 需求:页面直接访问下载Excel模板.

二.目录结构

  

三.后台代码

 1    @GetMapping("/downloadTemplateForUserTest")
 2     @ResponseBody
 3     public void downloadLocal(HttpServletResponse response) throws Exception {
 4         /** 获取静态文件的路径 .*/
 5         String path = ResourceUtils.getURL("classpath:").getPath() + "static/js/CRM_客户_导入模板.xlsx";
 6
 7         /** 获取文件的名称 . */
 8         String fileName = path.substring(path.lastIndexOf("/") +1);
 9         File file = new File(path);
10         if (!file.exists()){
11             logger.error("路径有误,文件不存在!");
12         }
13
14         /** 将文件名称进行编码 */
15         response.setHeader("content-disposition","attachment;filename=" + URLEncoder.encode(fileName,"UTF-8"));
16         response.setContentType("content-type:octet-stream");
17         BufferedInputStream inputStream = new BufferedInputStream(new FileInputStream(file));
18         OutputStream outputStream = response.getOutputStream();
19         byte[] buffer = new byte[1024];
20         int len;
21         while ((len = inputStream.read(buffer)) != -1){ /** 将流中内容写出去 .*/
22             outputStream.write(buffer ,0 , len);
23         }
24         inputStream.close();
25         outputStream.close();
26     }


2019-04-19  16:49:19 -- 1.0v

二.在服务器端使用上述方法的时候,文件路径找不到

错误:\C\Users\hzcuixiaoqing.m2\repository\com\netease\qa\cloudqa\nfit \0.1.0\nfit-0.1.0.jar!\cmdline_config_CPU.txt,服务器中获取静态文件时出现!号

分析定位原因:读取路径出现了"!",在网上找了很多的资料

 1 @GetMapping("/downloadTemplateForUser")
 2     @ResponseBody
 3     public void downloadTemplateForUser(HttpServletResponse response) throws Exception {
 4         String path = "/static/excel/导入到课程顾问模板.xlsx" ;
 5         String fileName = path.substring(path.lastIndexOf("/") + 1);
 6         downExcelTemplate(response, path, fileName);
 7         return;
 8
 9     }
10
11     private void downExcelTemplate(HttpServletResponse response, String path, String fileName) throws IOException {
12         /** 将文件名称进行编码 */
13         response.setHeader("content-disposition", "attachment;filename=" + URLEncoder.encode(fileName, "UTF-8"));
14         response.setContentType("content-type:octet-stream");
15         /** 读取服务器端模板文件*/
16         InputStream inputStream = DownloadFileController.class.getResourceAsStream(path);
17
18         /** 将流中内容写出去 .*/
19         OutputStream outputStream = response.getOutputStream();
20         byte[] buffer = new byte[1024];
21         int len;
22         while ((len = inputStream.read(buffer)) != -1) {
23             outputStream.write(buffer, 0, len);
24         }
25         inputStream.close();
26         outputStream.close();
27     }

使用上述的方法,可以解决服务器端的路径问题.

2019-05-06  --v1.1

转载于:https://www.cnblogs.com/djq-jone/p/10737946.html

springboot 应用中静态资源下载相关推荐

  1. SpringBoot项目中静态资源加载失败,那可能是自定义配置类继承了WebMvcConfigurationSupport这个类

    1.跟着视频课学SpringBoot,自己的一个html登录页面就是在浏览器中渲染不出来效果,很郁闷.我的项目结构如下: 2.想要打开login.html页面,该页面用到了静态资源中的css文件及sv ...

  2. 玩转springboot:默认静态资源和自定义静态资源实战

    点个赞,看一看,好习惯!本文 GitHub https://github.com/OUYANGSIHAI/JavaInterview 已收录,这是我花了3个月总结的一线大厂Java面试总结,本人已拿腾 ...

  3. 就SpringBoot+thymeleaf实现静态资源访问的实现

    就SpringBoot+thymeleaf实现静态资源访问的实现 露珠第一次接触SpringBoot,但是以前都是用的SpringMVC,于是乎在前后端分离开发的静态页面加载的方法上有所疑问,于是乎就 ...

  4. Spring MVC中静态资源的处理

    Spring MVC中静态资源的处理 REST风格的资源URL中不带后后缀,比如 /blog/tom -> 用户tom的blog资源 /order/1234 -> 订单号为1234的订单资 ...

  5. spring mvc 中静态资源404、302错误

    [求教]spring mvc 中静态资源404.302错误 (2019/3/22补充)在新的项目中也偶尔遇到资源被拦截的情况(前提我已经设置了各种静态资源不被拦截的措施),至今仍然没能找到具体原因,所 ...

  6. SpringBoot 读取项目中静态资源文件

    目录 一. ClassPathResource 二. DefaultResourceLoader 三. PathMatchingResourcePatternResolver 四. ResourceU ...

  7. SpringBoot中静态资源和首页定制

    在SpringBoot的标准项目中的resource目录如下 官方默认把我们的静态资源放到了static目录下,在该目录下写一个index.html即可直接访问,我们还可以在resources目录下创 ...

  8. SpringBoot加载静态资源

    在SpringBoot中加载静态资源和在普通的web应用中不太一样.默认情况下,Spring Boot从classpath下一个叫/static(/public,/resources或/META-IN ...

  9. SpringBoot cache-control 配置静态资源缓存 (以及其中的思考经历)

    昨天在部署项目时遇到一个问题,因为服务要部署到外网使用,中间经过了较多的网络传输限制,而且要加载arcgis等较大的文件,所以在部署后,发现页面loading需要很长时间,而且刷新也要重新从服务器下载 ...

最新文章

  1. Oracle中的in 和 not in
  2. javaSE各阶段练习题--工具类-常用类-递归-包装类-内部类
  3. C#开发终端式短信的原理和方法 .
  4. java面试题_2020年1-6月份Java面试题总结,20多类1100道面试题含答案解析
  5. [python]python pandas 模块
  6. 使用多线程提高Rest服务性能
  7. windows 2012 抓明文密码方法
  8. dynamips中网卡参数如何和网络连接中的具体网卡匹配
  9. CTF杂项题解题思路与方法
  10. 与硅谷完全不同,非洲的人工智能产业是这样的……
  11. Camunda流程引擎及表结构认识
  12. 使用Lua GD库动态生成验证码图片(2)
  13. 我为什么要离开传智再去创业?
  14. php12生肖是哪个,十二生肖对应的数字
  15. 加菲猫语录精选74 中英俄三语版
  16. Skype应用将在7月1日停止支持Windows Phone 8/8.1等系统
  17. 数据分析领域不同职位de薪酬职能差异
  18. DIY单片机串口打印函数print
  19. Linux常用指令---系统负载
  20. Linux 安装Redis 图解教程

热门文章

  1. qt中socket通信流程图_使用QT实现简单的tcp/ip通信
  2. mysql8jdbc连接串_mysql8 JDBC连接注意事项
  3. 教学一体机属于计算机的什么应用,教学一体机可以投屏吗
  4. 通过jquery获取td下的input标签的值,并且改变onclick的参数值
  5. 字节跳动学习笔记:javaweb商城项目
  6. java课程设计总结与思考,你掌握了多少?
  7. 从入门到精通的Java进阶学习笔记整理,不愧是大佬
  8. 机器学习(MACHINE LEARNING)多属性决策模型
  9. python【Matlibplot绘图库】画图种类(真の能看懂~!)
  10. mysql内置乐观锁吗_mysql 乐观锁详解