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

如何解決SpringBoot集成百度UEditor圖片上傳后直接訪問(wèn)404

 更新時(shí)間:2019年11月10日 09:41:32   作者:編程小白  
在本篇文章里小編給大家整理的是一篇關(guān)于如何解決SpringBoot集成百度UEditor圖片上傳后直接訪問(wèn)404相關(guān)文章,需要的朋友們學(xué)習(xí)下。

SpringBoot項(xiàng)目上傳圖片一般是上傳至遠(yuǎn)程服務(wù)器存儲(chǔ),開(kāi)發(fā)過(guò)程中可能會(huì)上傳至當(dāng)前項(xiàng)目的某個(gè)靜態(tài)目錄中,此時(shí)就會(huì)遇到這個(gè)問(wèn)題,文件在上傳之后直接訪問(wèn)并不能被訪問(wèn)到,必須重新加載項(xiàng)目。

首先分析一下原因:

我們知道,如果使用類似 /upload/image/1.jpg 這種格式進(jìn)行圖片的訪問(wèn)的時(shí)候,SpringBoot讀取的并不是本項(xiàng)目中直接的靜態(tài)目錄,而是在進(jìn)行編譯的時(shí)候生成target目錄下的文件,如下圖所示:

那么問(wèn)題就來(lái)了,我們?cè)谶\(yùn)行的過(guò)程中上傳一個(gè)圖片的話,并不能重新加載當(dāng)前這個(gè)項(xiàng)目,也就是target目錄下的文件一直是之前的文件,盡管有人說(shuō)我進(jìn)行了SpringBoot熱部署(dev-tools),能夠自動(dòng)重新加載項(xiàng)目,但是問(wèn)題是熱部署也需要一定的時(shí)間去分析和重新加載項(xiàng)目,所以上傳文件后直接進(jìn)行訪問(wèn)肯定就不能實(shí)現(xiàn)了。

簡(jiǎn)單來(lái)說(shuō):文件只是單純的上傳到項(xiàng)目的文件夾中,并沒(méi)有在target目錄下生成對(duì)應(yīng)的文件,導(dǎo)致訪問(wèn)不到。

在網(wǎng)上看了一個(gè)博客,說(shuō)可以在將文件復(fù)制到本地的時(shí)候也將文件復(fù)制到項(xiàng)目的target目錄下,這樣就可以訪問(wèn)了,聽(tīng)著也非常的有道理,但是實(shí)踐出真知,經(jīng)過(guò)我的測(cè)試,并不能實(shí)現(xiàn),不知道是因?yàn)槲业膯?wèn)題還是什么,所以并不推薦大家使用這個(gè)方法,當(dāng)然感興趣的也可以測(cè)試一下,畢竟這個(gè)聽(tīng)著是真的很有道理。

解決辦法:配置映射路徑攔截器,將虛擬路徑映射為真是圖片地址,達(dá)到回顯的目的(已測(cè)試,有效)

簡(jiǎn)單來(lái)說(shuō)就是將UEditor要訪問(wèn)的路徑映射成為本地的路徑,廢話不多說(shuō)直接上代碼:
注:SpringBoot1版本是extends WebMvcConfigurerAdapter類,SpringBoot2版本是implements WebMvcConfigurer,這個(gè)地方有點(diǎn)不一樣

@Override
 public void addResourceHandlers(ResourceHandlerRegistry registry){
   registry.addResourceHandler("swagger-ui.html").addResourceLocations("classpath:/META-INF/resources/");
   registry.addResourceHandler("/webjars/**").addResourceLocations("classpath:/META-INF/resources/webjars/");
   registry.addResourceHandler("/static/ueditor/**").addResourceLocations("classpath:/static/ueditor/");
   registry.addResourceHandler("/public/**").addResourceLocations("classpath:/public/");
   registry.addResourceHandler("/static/upload/image/**").addResourceLocations("file:" + UploadUtils.getImgDirFile().getAbsolutePath() + "/"); //添加這一行
 }

UploadUtils.java

public class UploadUtils {

 // 項(xiàng)目根路徑下的目錄 -- SpringBoot static 目錄相當(dāng)于是根路徑下(SpringBoot 默認(rèn))
 public final static String IMG_PATH_PREFIX = "static/upload/image";

 public static File getImgDirFile(){

  // 構(gòu)建上傳文件的存放 "文件夾" 路徑
  String fileDirPath = new String("src/main/resources/" + IMG_PATH_PREFIX);

  File fileDir = new File(fileDirPath);
  if(!fileDir.exists()){
   // 遞歸生成文件夾
   fileDir.mkdirs();
  }
  return fileDir;
 }

}

重點(diǎn)在于getAbsolutePath()方法,這個(gè)函數(shù)的作用是獲取當(dāng)前項(xiàng)目在當(dāng)前運(yùn)行環(huán)境下的絕對(duì)路徑,如我現(xiàn)在在開(kāi)發(fā)過(guò)程中獲得的結(jié)果就是D:\WorkSpace\IDEA-WorkSpace\......

設(shè)置完畢之后就可以正常顯示了。

注:如果你所使用的是SpringBoot多模塊項(xiàng)目,那么通過(guò)這個(gè)方法獲取到的往往是父項(xiàng)目所在的地址,因此也會(huì)出現(xiàn)問(wèn)題,解決這個(gè)問(wèn)題的辦法是配置當(dāng)前項(xiàng)目啟動(dòng)類的工作環(huán)境是在具體的某個(gè)項(xiàng)目

   

設(shè)置完畢后即可解決這個(gè)問(wèn)題

附:之前在說(shuō)這個(gè)問(wèn)題的時(shí)候,也有人給我提了一個(gè)建議,就是不將圖片放置在項(xiàng)目中,而是放置在某個(gè)固定的盤符中,這樣返回請(qǐng)求路徑的時(shí)候直接請(qǐng)求本地地址,等將來(lái)發(fā)布到服務(wù)器的時(shí)候使用Nginx。

不過(guò)問(wèn)題是我對(duì)Nginx并不是很了解,所以等我學(xué)會(huì)了Nginx之后再來(lái)完善吧,你們可以先替我試試好不好用

以上就是本次介紹的關(guān)于SpringBoot圖片上傳404的全部知識(shí)點(diǎn)內(nèi)容,感謝大家的學(xué)習(xí)和對(duì)腳本之家的支持。

相關(guān)文章

  • android顯示意圖激活另一個(gè)Activity的方法

    android顯示意圖激活另一個(gè)Activity的方法

    下面小編就為大家?guī)?lái)一篇android顯示意圖激活另一個(gè)Activity的方法。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-06-06
  • SpringBoot整合ip2region獲取客戶端IP地理位置信息

    SpringBoot整合ip2region獲取客戶端IP地理位置信息

    在我們?nèi)粘EB開(kāi)發(fā)工作中,經(jīng)常會(huì)有需要獲取客戶端地理位置的需求,本文主要介紹了SpringBoot整合ip2region獲取客戶端IP地理位置信息,具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-08-08
  • PowerJob的DispatchStrategy方法工作流程源碼解讀

    PowerJob的DispatchStrategy方法工作流程源碼解讀

    這篇文章主要為大家介紹了PowerJob的DispatchStrategy方法工作流程源碼解讀,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2024-01-01
  • springboot自定義日志注解的實(shí)現(xiàn)

    springboot自定義日志注解的實(shí)現(xiàn)

    本文主要介紹了springboot自定義日志注解的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • Java中如何快速構(gòu)建項(xiàng)目腳手架的實(shí)現(xiàn)

    Java中如何快速構(gòu)建項(xiàng)目腳手架的實(shí)現(xiàn)

    這篇文章主要介紹了Java中如何快速構(gòu)建項(xiàng)目腳手架,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-05-05
  • SpringBoot+MyBatisPlus+Vue 前后端分離項(xiàng)目快速搭建過(guò)程(前端篇)

    SpringBoot+MyBatisPlus+Vue 前后端分離項(xiàng)目快速搭建過(guò)程(前端篇)

    這篇文章主要介紹了SpringBoot+MyBatisPlus+Vue 前后端分離項(xiàng)目快速搭建過(guò)程(前端篇),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-05-05
  • Java集合中的fail-fast(快速失敗)機(jī)制詳解

    Java集合中的fail-fast(快速失敗)機(jī)制詳解

    這篇文章主要給大家介紹了關(guān)于Java集合中fail-fast(快速失敗)機(jī)制的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-02-02
  • SpringBoot之Banner的使用示例

    SpringBoot之Banner的使用示例

    本篇文章主要介紹了SpringBoot之Banner的使用示例,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-11-11
  • Spring Boot 發(fā)送郵件功能案例分析

    Spring Boot 發(fā)送郵件功能案例分析

    這篇文章主要介紹了 Spring Boot 發(fā)送郵件功能,本文通過(guò)代碼結(jié)合案例分析給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2017-11-11
  • java通過(guò)snmp協(xié)議獲取物理設(shè)備信息

    java通過(guò)snmp協(xié)議獲取物理設(shè)備信息

    這篇文章主要介紹了java通過(guò)snmp協(xié)議獲取物理設(shè)備信息,snmp中文含義是簡(jiǎn)單網(wǎng)絡(luò)管理協(xié)議,可用完成對(duì)計(jì)算機(jī)、路由器和其他網(wǎng)絡(luò)設(shè)備的遠(yuǎn)程管理和監(jiān)視,本文我們是通過(guò)java程序來(lái)獲取,需要的朋友可以參考下
    2023-07-07

最新評(píng)論

无棣县| 宁城县| 蒲城县| 屏山县| 德保县| 根河市| 饶河县| 桃园市| 青浦区| 科尔| 城市| 手游| 师宗县| 莆田市| 淮安市| 营口市| 托克托县| 石城县| 乐陵市| 兴业县| 奉新县| 赤壁市| 昆明市| 诸城市| 司法| 泊头市| 甘洛县| 乾安县| 定边县| 临武县| 黎川县| 德江县| 娄烦县| 克东县| 泰州市| 海丰县| 密云县| 通榆县| 洪湖市| 清原| 霍城县|