您的位置:首页 > 运维架构 > Docker

解决springboot项目打war 包docker包找不到resource 下的静态资源问题

2016-10-24 23:25 961 查看
前一段时间遇到一个问题,是关于读取项目中文件资源的问题。我是一个maven 工程 我把一张照片放到resource 下面,然后在本地读取的时候 可以读取到,但是一旦打成WAR 包以后就总是包找不到文件资源错误。 我的war 包是springboot 打的war 包,是内嵌的tomcat 所以不解压,然后系统去找路径的时候会发现是个WAR 包,而图片在WAR 包内,所以找不到。

为了解决这个问题,我走了好多弯路,一直在路径上花费时间。最后我是通过系统运行去读取文件源,然后将文件流存储在服务器上,存一个临时文件,然后系统再去读这个临时文件,然后就读取到这个文件了。

其实就是java数据流转换为文件

解题思路是上述那样的。接着就是代码了

调用代码如下

File f = new File("/tmp/image1.jpg"));//临时图片存在的位置
if (!f.exists()) {
InputStream in = this.getClass().getResourceAsStream("/templates/emailImg.png");//图片在项目中的位置
FileUtil.inputstreamtofile(in, f);
}
// 如果需要使用文件,这个/tmp/image1.jpg就是临时文件路径


转换方法代码如下

public static  void inputstreamtofile(InputStream ins, File file) {
try {
OutputStream os = new FileOutputStream(file);
int bytesRead = 0;
byte[] buffer = new byte[8192];
while ((bytesRead = ins.read(buffer, 0, 8192)) != -1) {
os.write(buffer, 0, bytesRead);
}
os.close();
ins.close();
} catch (Exception e) {
e.printStackTrace();
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  springboot
相关文章推荐