赞
踩
在springboot项目中做文件下载的时候,获取路径的方式与传统的SSM项目有一些不一样的地方;
在传统的SSM项目中。所有的页面和静态资源都写在webapp目录里面,而webapp指向工程的contextPath,所以可以像类似于下面这样获取资源的绝对路径:
String path = request.getServletContext().getRealPath("templates") + File.separator + "report_template.xlsx";
但是在springboot项目中,把静态资源都放在了resource目录下,springboot要找到resource目录下的资源时需要用到ClassPathResource类,类似与这样获取资源:
- ClassPathResource classPathResource = new ClassPathResource("templates/report_template.xlsx");
- InputStream inputStream =classPathResource.getInputStream();
做文件下载时有两种情况:
1、第一种直接让你下载一个空的模板文件或图片,不需要再后端进行数据处理,此时直接在前端用location.href="xxx的文件路径和"
2、第二种是给你一个空的模板文件,但是下载下来的文件里面是要有数据库的数据的,需要再后端进行数据处理,这时就需要再后端接口进行数据处理
Controler接口中处理文件下载的主要步骤:
1)获取需要填充到模板文件的数据,把数据填充到模板文件的指定位置(通过行和列来定位),读取模板文件的时候,文件路径不能出错(读取方法类似于上面的情况)
2)获取输出流,通常是用
ServletOutputStream outputStream = response.getOutputStream();
3)设置浏览器能解析的内容类型
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。