springboot获取resource目录路径,springboot读取resources下的文件
00-1010获取资源文件路径后台解决方案获取资源下的文件夹路径是基于maven项目的pom文件中的配置。这是我后来修改的正常包装情况。
目录
00-1010在SpringBoot项目中,需要获取资源文件的路径,但是网上很多文章都失败了。后来结合官方文件实现了。这里记录了我用的版本是SpringBoot2.x
00-1010 1.获取资源文件夹的路径
文件目录=新文件( XXX/XXX/src/main/resources );string report path=directory . getcanonicalpath();Xxx是您的项目中的包的名称。文件将只找到项目的最外层地址;
这里需要注意的是,xxx前不能加/,否则只会找到顶级地址。
00-1010现在需要使用模板文件生成HTML或PDF文件。然后因为HTML模板文件包含图片和字体,我在资源文件夹下新建了一个文件夹,然后分类,就是资源下有一个上传文件夹,一个模板文件夹,然后是模板文件。也就是说模板文件在resource下面的两级目录里,那么问题来了。我想尽了一切办法,但我拿不到文件。
获取resources文件路径
maven包包含这些模板文件:
构建资源资源目录rc/main/resources/directory包含include**/*。xml/include include**/*。png/include include**/*。html/include include**/*。ttf/include include**/*。TTF/include include**/*。ttc/include /includes!-是否要替换资源筛选false/filtering/resource/resources/build中的属性?安装后,您可以在当前模块或项目的目标文件夹中看到我们的模板文件。
背景
在代码中,使用了这个好评率最高的ClassPathResource。
导入org . spring framework . core . io;resource resource=new class path resource( upload/template file );log.info(contextPath:{} ,resource . geturl());此时,按照理想情况,应该是可以打印出文件夹templateFile的绝对路径。如果该文件夹存在于resource下,您可以获得该文件夹的绝对路径。
事实真的很虚。太神奇了。一开始我以为。是因为和别人的项目不一样才造成这个问题吗?
踩了很久坑,发现路径太深,就把templateFile直接放在资源下面。我又试了一次,发现上面的日志不再是空的,可以正常获取模板文件的绝对路径了。这对于windows和Linux都是可能的。
然后好像问题解决了。但是,由于我的部署使用docker镜像,所以获取模板文件和生成文件是正常的。但是,由于生成的HTML文件使用各种徽标图像文件,因此生成文件的位置也安装在主机上。在容器内部查看生成的文件是正常的,但是生成的HTML文件中的图像不会显示在主机上。
期间试着用了文件服务器上的图片,可以正常显示。但是由于文件服务器没有连接外网,生成的文件放到其他地方就不会显示。
最后,把容器内部的一个路径挂载到主机同名的路径,把固定的模板文件和需要的图片存放在主机的文件夹里,把路径硬编码到程序里,也能正常生成文件和echo,这是最笨的办法。
以上个人经验,希望能给大家一个参考,也希望大家能支持盛行的IT。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。