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

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

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

SpringBoot項目上傳圖片一般是上傳至遠程服務器存儲,開發(fā)過程中可能會上傳至當前項目的某個靜態(tài)目錄中,此時就會遇到這個問題,文件在上傳之后直接訪問并不能被訪問到,必須重新加載項目。

首先分析一下原因:

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

那么問題就來了,我們在運行的過程中上傳一個圖片的話,并不能重新加載當前這個項目,也就是target目錄下的文件一直是之前的文件,盡管有人說我進行了SpringBoot熱部署(dev-tools),能夠自動重新加載項目,但是問題是熱部署也需要一定的時間去分析和重新加載項目,所以上傳文件后直接進行訪問肯定就不能實現(xiàn)了。

簡單來說:文件只是單純的上傳到項目的文件夾中,并沒有在target目錄下生成對應的文件,導致訪問不到。

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

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

簡單來說就是將UEditor要訪問的路徑映射成為本地的路徑,廢話不多說直接上代碼:
注:SpringBoot1版本是extends WebMvcConfigurerAdapter類,SpringBoot2版本是implements WebMvcConfigurer,這個地方有點不一樣

@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 {

 // 項目根路徑下的目錄 -- SpringBoot static 目錄相當于是根路徑下(SpringBoot 默認)
 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;
 }

}

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

設置完畢之后就可以正常顯示了。

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

   

設置完畢后即可解決這個問題

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

不過問題是我對Nginx并不是很了解,所以等我學會了Nginx之后再來完善吧,你們可以先替我試試好不好用

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

相關(guān)文章

  • java中ThreadLocalRandom的使用詳解

    java中ThreadLocalRandom的使用詳解

    這篇文章主要介紹了java中ThreadLocalRandom的使用詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-03-03
  • Java讀取txt文件和寫入txt文件的簡單實例

    Java讀取txt文件和寫入txt文件的簡單實例

    下面小編就為大家?guī)硪黄狫ava讀取txt文件和寫入txt文件的簡單實例。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-11-11
  • java8新特性之接口的static和default的使用

    java8新特性之接口的static和default的使用

    這篇文章主要介紹了java8新特性之接口的static和default的使用,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-01-01
  • 深入淺析JDK8新特性之Lambda表達式

    深入淺析JDK8新特性之Lambda表達式

    Lambda表達式主要是替換了原有匿名內(nèi)部類的寫法,也就是簡化了匿名內(nèi)部類的寫法。這篇文章主要介紹了JDK8新特性之Lambda表達式,非常不錯感興趣的朋友參考下吧
    2016-10-10
  • 詳解Spring Boot中Controller用法

    詳解Spring Boot中Controller用法

    Controller是SpringBoot里最基本的組件,他的作用是把用戶提交來的請求通過對URL的匹配,分配個不同的接收器,再進行處理,然后向用戶返回結(jié)果。下面通過本文給大家介紹Spring Boot中Controller用法,需要的朋友參考下
    2017-05-05
  • RateLimiter 源碼分析

    RateLimiter 源碼分析

    本文主要對ratelimiter的常用方法以及源碼進行了分析解讀,具有一定參考價值,需要的朋友可以了解下。
    2017-09-09
  • 圖文詳解java反射機制及常用應用場景

    圖文詳解java反射機制及常用應用場景

    這篇文章主要為大家介紹了圖文詳解java反射機制及常用應用場景,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-03-03
  • 有關(guān)tomcat內(nèi)存溢出的完美解決方法

    有關(guān)tomcat內(nèi)存溢出的完美解決方法

    下面小編就為大家?guī)硪黄嘘P(guān)tomcat內(nèi)存溢出的完美解決方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-05-05
  • intellij idea旗艦版解決學生無法注冊問題詳解

    intellij idea旗艦版解決學生無法注冊問題詳解

    這篇文章主要介紹了intellij idea旗艦版解決學生無法注冊問題詳解,文中通過圖文示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-07-07
  • java冒泡排序和選擇排序示例

    java冒泡排序和選擇排序示例

    這篇文章主要介紹了java冒泡排序和選擇排序示例,需要的朋友可以參考下
    2014-05-05

最新評論