需求背景
最近在做一個用戶自定義上傳頭像的小需求,用戶上傳頭像然后需要立馬回顯。
需求是很常見的、正當的需求。如果不使用到對象存儲這類服務,我們把用戶頭像的圖片文件僅存在本地就可以了。我們在開發的過程中為了工程管理方便通常下意識會將圖片上傳目錄設置為代碼工程的一個子目錄。問題就出在這里。
現象分析
因為靜態資源文件在工程啟動的時候就已經加載完成了,用戶上傳的頭像不會再加載到程序內存中。所以這樣會導致一個問題,我們在前端操作頭像圖片文件上傳。頭像文件也確實上傳到了指定目錄下面。但是前端訪問獲取圖片資源就是獲取不到,報錯404。
解決方案
自己檢索了一下問題,除了本身上傳代碼就有問題之外,基本大家給出的方案包含兩個方向:
- 配置工程熱啟動(x)
- 修改圖片上傳目錄為代碼工程之外的目錄(√)
”配置工程熱啟動“這個方法十分繁瑣,需要在工程中引入熱啟動依賴:
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-devtools</artifactId><scope>runtime</scope><optional>true</optional></dependency>
并且需要配置IDEA,最糟糕的是沒有效果!!!
最后可行的解決方案我只找到這個:修改圖片上傳目錄為代碼工程之外的目錄。
傳送門
- 解決SpringBoot + Vue圖片上傳后不立刻回顯的問題:https://springboot.io/t/topic/4806