时间:2021-05-20
前一段时间遇到一个问题,是关于读取项目中文件资源的问题。我是一个maven工程 我把一张照片放到resource下面,然后在本地读取的时候可以读取到,但是一旦打成WAR包以后就总是包找不到文件资源错误。我的war包是springboot打的war包,是内嵌的tomcat所以不解压,然后系统去找路径的时候会发现是个WAR包,而图片在WAR包内,所以找不到。
为了解决这个问题,我走了好多弯路,一直在路径上花费时间。
一开始使用修改配置文件的方式:
# 配置静态资源访问前缀spring.mvc.static-path-pattern=*/**# 配置静态资源路径,默认配置失效spring.resources.static-locations=../upload发现并不行,无法解析出相对路径。
最后我是通过系统运行去读取文件源,然后将文件流存储在服务器上,存一个临时文件,然后系统再去读这个临时文件,然后就读取到这个文件了。
其实就是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(); } }需要注意一下, 放置临时文件的路径可能是在docker容器中的,而不是在服务器上. 所以需要先把前面的路径 mkdirs, 然后再f.createNewFile;, 一下再调用FileUtil.inputstreamtofile才可以。
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对的支持。如果你想了解更多相关内容请查看下面相关链接
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
SpringBoot除了可以打可执行jar包外,也支持传统的war包。本文介绍如何使用SpringBoot构建传统war包。SpringBoot打war包步骤如
1.springboot不支持jsp打jar包,jsp只能打war包.方法:warorg.springframework.bootspring-boot-mav
本篇和大家分享的是通过maven对springboot中打war包和jar包;war通常来说生成后直接放到tomcat的webapps下面就行,tomcat配置
由于springboot常用war包部署,改为cloud开发模式多端口情况下,部署反而不习惯毕竟,war包要不要项目名访问都必须放在tomcat的root目录下
安装office失败提示找不到指定模块该怎么办?下载office的安装包以后点击setup提示找不到指定模块的解决方案,感兴趣的朋友可以进来参考。软件名称:Mi