解决springboot项目打war 包docker包找不到resource 下的静态资源问题
前一段时间遇到一个问题,是关于读取项目中文件资源的问题。我是一个maven 工程 我把一张照片放到resource 下面,然后在本地读取的时候 可以读取到,但是一旦打成WAR包以后就总是包找不到文件资源错误。我的war 包是springboot 打的war 包,是内嵌的tomcat 所以不解压,然后系统去找路径的时候会发现是个WAR 包,而图片在WAR 包内,所以找不到。为了解决这个问题,我
·
前一段时间遇到一个问题,是关于读取项目中文件资源的问题。我是一个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();
}
}
更多推荐
已为社区贡献11条内容
所有评论(0)