最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

使用springboot對外部靜態(tài)資源文件的處理操作

 更新時間:2021年08月20日 11:29:38   作者:Honins  
這篇文章主要介紹了使用springboot對外部靜態(tài)資源文件的處理操作,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

springboot對外部靜態(tài)資源文件的處理

springboot對外部資源文件的處理主要分為2部分,存和取,通過查看官方文件和看博客踩了坑之后終于搞定了,特此記錄。

1、存方面倒還簡單,這里貼上一個獲取微信臨時素材并保存的方法

/**
     * @功能 下載臨時素材接口
     * @param filePath 文件將要保存的目錄
     * @param method 請求方法,包括POST和GET
     * @param url 請求的路徑
     * @return
     */ 
    public static String saveUrlAs(String url,String filePath,String method){
        //創(chuàng)建不同的文件夾目錄
        File file=new File(filePath);
        //判斷文件夾是否存在
        if (!file.exists())
        {
            //如果文件夾不存在,則創(chuàng)建新的的文件夾
            file.mkdirs();
        }
        FileOutputStream fileOut = null;
        HttpURLConnection conn = null;
        InputStream inputStream = null;
        String savePath = null ;
        try
        {
            // 建立鏈接
            URL httpUrl=new URL(url);
            conn=(HttpURLConnection) httpUrl.openConnection();
            //以Post方式提交表單,默認(rèn)get方式
            conn.setRequestMethod(method);
            conn.setDoInput(true);
            conn.setDoOutput(true);
            // post方式不能使用緩存
            conn.setUseCaches(false);
            //連接指定的資源
            conn.connect();
            //獲取網(wǎng)絡(luò)輸入流
            inputStream=conn.getInputStream();
            BufferedInputStream bis = new BufferedInputStream(inputStream);
            //判斷文件的保存路徑后面是否以/結(jié)尾
            if (!filePath.endsWith("/")) { 
                filePath += "/"; 
            }
            String filePathDir =  DateUtil.getStringAllDate();
            //寫入到文件(注意文件保存路徑的后面一定要加上文件的名稱)
            savePath = filePath+filePathDir+".png";
            fileOut = new FileOutputStream(savePath);
            BufferedOutputStream bos = new BufferedOutputStream(fileOut);
 
            byte[] buf = new byte[4096];
            int length = bis.read(buf);
            //保存文件
            while(length != -1)
            {
                bos.write(buf, 0, length);
                length = bis.read(buf);
            }
            bos.close();
            bis.close();
            conn.disconnect();
        } catch (Exception e)
        {
            e.printStackTrace();
            logger.error(">>>>>>>>>>>>>>>>下載臨時素材接口拋出異常 [{}]",e.getMessage());
        } 
        return savePath; 
    }

2、取,由于對springboot不熟悉,所以在這上面踩了坑

先看一下springboot官方文檔對靜態(tài)資源這一塊的表述

主要使用到這2個配置

spring.mvc.static-path-pattern=/resources/**    //配置url訪問路徑
spring.resources.static-locations=                      //配置對應(yīng)的文件路徑

由于我想要將靜態(tài)資源存到項目外部比如 和項目根目錄同級的 static文件夾里,然后配置了

spring.resources.static-locations=  static/
spring.mvc.static-path-pattern=/static/** 

之后,訪問文件一直404

隨后網(wǎng)上查了一下,看到了一篇文章,發(fā)現(xiàn)

spring.resources.static-locations= file:xxx 

使用了file: + 路徑這一配置方法,然后嘗試了一下,變成這樣:

spring:
  resources:
    static-locations: file:${my.config.static-location}
my:
  config:
    static-location: /static/

發(fā)現(xiàn)文件訪問成功了!

所以實際上外部文件是需要file: 來配置的, static-locations默認(rèn)訪問的是類路徑下的文件

SpringBoot2.x靜態(tài)資源訪問

問題

在springBoot1.5.x版本,訪問靜態(tài)資源直接訪問static目錄下的資源即可,不用帶上static前綴,在2.x以上就失效了,現(xiàn)在記錄下在2.x版本如何訪問靜態(tài)資源

開發(fā)環(huán)境:IDEA

文件目錄:

  • templates存放官方推薦的thymeleaf模板
  • static存放靜態(tài)資源

在controller目錄下新建一個類,繼承WebMvcConfigurationSupport,對靜態(tài)資源目錄說明

代碼

@Configuration
public class WebConfig extends WebMvcConfigurationSupport {
    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler("/static/**").addResourceLocations("classpath:/static/");
    }
}

原理

當(dāng)訪問的url中匹配到/static/**時,就去訪問靜態(tài)資源存放地static目錄下尋找資源

在配置了靜態(tài)資源路徑后,就可以訪問靜態(tài)資源了,但是在訪問時需要在路徑前加上static

<a th:href="@{/static/imag1.jpg}" rel="external nofollow" >跳轉(zhuǎn)</a>
<a th:href="@{/static/images/image2.jpg}" rel="external nofollow" >跳轉(zhuǎn)</a>

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

相關(guān)文章

  • Java 自旋鎖(spinlock)相關(guān)知識總結(jié)

    Java 自旋鎖(spinlock)相關(guān)知識總結(jié)

    這篇文章主要介紹了Java 自旋鎖(spinlock)相關(guān)知識總結(jié),幫助大家更好的理解和使用Java,感興趣的朋友可以了解下
    2021-02-02
  • Java面試高頻問題之RabbitMQ系列全面解析

    Java面試高頻問題之RabbitMQ系列全面解析

    在介紹RabbitMQ之前實現(xiàn)要介紹一下MQ,MQ是什么?MQ全稱是Message Queue,可以理解為消息隊列的意思,簡單來說就是消息以管道的方式進(jìn)行傳遞。RabbitMQ是一個實現(xiàn)了AMQP(Advanced Message Queuing Protocol)高級消息隊列協(xié)議的消息隊列服務(wù),用Erlang語言的
    2021-11-11
  • mybatis的test坑及解決(不等于‘‘ 且 不等于0)

    mybatis的test坑及解決(不等于‘‘ 且 不等于0)

    這篇文章主要介紹了mybatis的test坑及解決(不等于‘‘ 且 不等于0),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-03-03
  • spring mvc路徑匹配原則詳解

    spring mvc路徑匹配原則詳解

    這篇文章主要介紹了spring mvc路徑匹配原則詳解,小編覺得還是挺不錯的,這里分享給大家,需要的朋友可以參考下,下面就和小編一起來看看吧
    2018-02-02
  • Java中將List拆分為多個小list集合的實現(xiàn)代碼

    Java中將List拆分為多個小list集合的實現(xiàn)代碼

    這篇文章主要介紹了Java中如何將List拆分為多個小list集合,本文通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-03-03
  • 一文帶你了解Spring中@Enable開頭注解的使用

    一文帶你了解Spring中@Enable開頭注解的使用

    前面的文章給大家介紹?Spring?的重試機制的時候有提到過?Spring?有很多?@Enable?開頭的注解,平時在使用的時候也沒有注意過為什么會有這些注解,今天就給大家介紹一下
    2022-09-09
  • MyBatis Plus配置日志CRUD的使用詳解

    MyBatis Plus配置日志CRUD的使用詳解

    這篇文章主要介紹了MyBatis Plus配置日志,CRUD的使用,,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-08-08
  • JDK源碼中一些實用的“小技巧”總結(jié)

    JDK源碼中一些實用的“小技巧”總結(jié)

    這篇文章主要給大家總結(jié)介紹了關(guān)于JDK源碼中一些實用的“小技巧”,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用jdk源碼具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。
    2018-03-03
  • JVM常用垃圾收集器及GC算法解讀

    JVM常用垃圾收集器及GC算法解讀

    這篇文章主要介紹了JVM常用垃圾收集器及GC算法,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-04-04
  • java 中 request.getSession(true、false、null)的區(qū)別

    java 中 request.getSession(true、false、null)的區(qū)別

    這篇文章主要介紹了java 中 request.getSession(true/false/null)的區(qū)別的相關(guān)資料,需要的朋友可以參考下
    2017-02-02

最新評論

河西区| 铜陵市| 沛县| 遂平县| 梅州市| 古蔺县| 望谟县| 酒泉市| 商河县| 伊川县| 济南市| 上虞市| 全椒县| 丹阳市| 通州区| 瑞丽市| 竹山县| 翁牛特旗| 灵寿县| 会理县| 宿州市| 哈密市| 黎平县| 扶沟县| 外汇| 横山县| 宝清县| 佛教| 桃江县| 青田县| 二连浩特市| 汉阴县| 普陀区| 左贡县| 旌德县| 泸定县| 宁武县| 宁津县| 永平县| 澎湖县| 阿拉善左旗|