欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

使用SpringBoot獲取resources文件路徑

 更新時(shí)間:2022年06月17日 10:21:30   作者:hongyu#ding  
這篇文章主要介紹了使用SpringBoot獲取resources文件路徑,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

獲取resources文件路徑

背景

在SpringBoot項(xiàng)目中,需要獲取resources文件的路徑,網(wǎng)上找了好多文章都不行,后面還是結(jié)合官方文檔實(shí)現(xiàn)了,這里記錄下,我使用的版本是SpringBoot2.x版本

解決方案

1、獲取resources文件夾路徑

File directory = new File("xxx/xxx/src/main/resources");
String reportPath = directory.getCanonicalPath();

xxx為你的項(xiàng)目?jī)?nèi)包的名稱,F(xiàn)ile只會(huì)找到項(xiàng)目最外層地址;

這里需要注意,不能在xxx前面加/,否則只會(huì)找到頂層地址 

獲取resource下文件夾路徑的坑

現(xiàn)在有個(gè)需求是需要利用模板文件生成HTML 或者 PDF 文件,然后由于HTML 模板文件里面包含圖片和字體,然后我就在resource 文件夾下新建了一個(gè)文件夾,然后又分類,也就是 resource 下面有個(gè) upload文件夾,有個(gè) templateFile 文件夾,然后才是模板文件。也就是說模板文件在resource下面兩級(jí)目錄里面,那么問題來了。用了各種辦法,就是獲取不到這個(gè)文件。。。。。。。。

前提是maven項(xiàng)目的pom文件里面配置了

maven打包包含這些模板文件:

    <build>
        <resources>
            <resource>
                <directory>src/main/resources</directory>
                <includes>
                    <include>**/*.xml</include>
                    <include>**/*.png</include>
                    <include>**/*.html</include>
                    <include>**/*.ttf</include>
                    <include>**/*.TTF</include>
                    <include>**/*.ttc</include>
                </includes>
                <!--是否替換資源中的屬性-->
                <filtering>false</filtering>
            </resource>
        </resources>
    </build>

然后install后,可以在當(dāng)前模塊或者項(xiàng)目的 target 文件夾下可以看到我們的模板文件。

這是后來我修改后的正常打包情況

其中代碼里面,用了好評(píng)率最高的這個(gè) ClassPathResource

import org.springframework.core.io;
Resource resource = new ClassPathResource("upload/templateFile");
log.info("contextPath:{}", resource.getURL());

這時(shí)候,按照理想情況,應(yīng)該就是可以打印出來 templateFile 這個(gè)文件夾所在的絕對(duì)路徑了。如果這個(gè)文件夾存在resource下面,是可以拿到這個(gè)文件夾的絕對(duì)路徑的。

事實(shí)確是空的。。。。。就很神奇,剛開始以為。是不是因?yàn)楦鷦e人的項(xiàng)目不一樣,才導(dǎo)致的這個(gè)問題呢。

后面踩坑了半天,發(fā)現(xiàn),是不是路徑太深了,把往前提一層呢,就試下把 templateFile 直接放到 resources 下面,再次嘗試,發(fā)現(xiàn)上面日志不再是空的了,可以正常取到模板文件所在的絕對(duì)路徑了。這點(diǎn)windows和Linux都是可以的。

然后看似問題解決了,但是由于我這邊部署使用docker鏡像部署的,獲取模板文件和生成文件也是正常的,但是由于生成的HTML文件用到了各種logo圖片文件,然后生成的文件所在位置也掛載到宿主機(jī)上了,在容器內(nèi)部查看生成的文件是正常的,但是到了宿主機(jī)上,生成的HTML文件里面的圖片就不顯示了。

期間嘗試了使用文件服務(wù)器上的圖片,是可以正常顯示的,但是由于文件服務(wù)器跟外網(wǎng)不通,所以生成的文件,放到別的地方,圖片就不顯示了。

最后還是采用最笨的方法,將容器內(nèi)部的某個(gè)路徑掛載到宿主機(jī)的同名路徑上,在宿主機(jī)的文件夾下存放固定的模板文件和需要用到的圖片,路徑硬編碼寫死到程序里面,也是可以正常生成文件和回顯的。

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • maven打包本地jar到項(xiàng)目中的方法實(shí)現(xiàn)

    maven打包本地jar到項(xiàng)目中的方法實(shí)現(xiàn)

    本文主要介紹了maven打包本地jar到項(xiàng)目中的方法實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-06-06
  • Java 根據(jù)某個(gè) key 加鎖的實(shí)現(xiàn)方式

    Java 根據(jù)某個(gè) key 加鎖的實(shí)現(xiàn)方式

    日常開發(fā)中,有時(shí)候需要根據(jù)某個(gè) key 加鎖,確保多線程情況下,對(duì)該 key 的加鎖和解鎖之間的代碼串行執(zhí)行,這篇文章主要介紹了Java 根據(jù)某個(gè) key 加鎖的實(shí)現(xiàn)方式,需要的朋友可以參考下
    2023-03-03
  • Java 對(duì) Cookie增刪改查的實(shí)現(xiàn)示例

    Java 對(duì) Cookie增刪改查的實(shí)現(xiàn)示例

    這篇文章主要介紹了Java 對(duì) Cookie增刪改查的實(shí)現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-05-05
  • 詳解Javaee Dao層的抽取

    詳解Javaee Dao層的抽取

    這篇文章主要介紹了詳解Javaee Dao層的抽取,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-07-07
  • Android接入微信支付的方法

    Android接入微信支付的方法

    這篇文章主要介紹了Android接入微信支付的方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-05-05
  • Java程序中實(shí)現(xiàn)調(diào)用Python腳本的方法詳解

    Java程序中實(shí)現(xiàn)調(diào)用Python腳本的方法詳解

    這篇文章主要介紹了Java程序中實(shí)現(xiàn)調(diào)用Python腳本的方法,結(jié)合實(shí)例形式分析了eclipse環(huán)境中使用Java調(diào)用Python腳本的相關(guān)操作技巧與注意事項(xiàng),需要的朋友可以參考下
    2018-03-03
  • Java與Node.js利用AES加密解密出相同結(jié)果的方法示例

    Java與Node.js利用AES加密解密出相同結(jié)果的方法示例

    這篇文章主要介紹了Java與Node.js利用AES加密解密出相同結(jié)果的方法,文中給出了詳細(xì)的示例代碼,相信對(duì)大家的學(xué)習(xí)或者工作能帶來一定的幫助,需要的朋友們下面來一起看看吧。
    2017-02-02
  • 淺析JAVA中的內(nèi)存結(jié)構(gòu)、重載、this與繼承

    淺析JAVA中的內(nèi)存結(jié)構(gòu)、重載、this與繼承

    這篇文章主要介紹了 JAVA中的內(nèi)存結(jié)構(gòu)、重載、this與繼承的相關(guān)資料,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-03-03
  • Scala遞歸函數(shù)調(diào)用自身

    Scala遞歸函數(shù)調(diào)用自身

    這篇文章主要介紹了Scala遞歸函數(shù),Scala遞歸函數(shù)是一種函數(shù)可以調(diào)用自身的函數(shù),直到滿足某個(gè)特定的條件為止。在函數(shù)式編程的語(yǔ)言中,遞歸函數(shù)起著重要的作用,因?yàn)樗梢杂脕肀硎狙h(huán)或迭代的邏輯
    2023-04-04
  • Java8 Optional原理及用法解析

    Java8 Optional原理及用法解析

    這篇文章主要介紹了Java8 Optional原理及用法解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-09-09

最新評(píng)論