天天看點

Spring Boot 內建阿裡雲 OSS 進行檔案存儲開通 OSSSpring Boot 內建 OSS

武培軒

推薦搜尋

Spring BootJava資料結構MySQLRedisElasticsearch

最近因為項目中需要存儲很多的圖檔,不想存儲到伺服器上,是以就直接選用阿裡雲的對象服務(Object Storage Service,簡稱 OSS)來進行存儲,本文将介紹 Spring Boot 內建 OSS 的一個完整過程。

那麼 OSS 是什麼呢?

簡而言之,OSS 是一種海量、安全、低成本、高可靠的雲存儲服務。

關于 OSS 的知識就不再這裡贅述了,大家可以自行學習下。

首先需要在阿裡雲控制台開通 OSS,然後需要建立存儲空間(Bucket),我這裡命名為 wupx-img。

Spring Boot 內建阿裡雲 OSS 進行檔案存儲開通 OSSSpring Boot 內建 OSS

建立 Bucket

如果之前沒有建立過 AccessKey,滑鼠移到右上角的賬号後點選 AccessKey 管理,然後建立就可以了。

或者直接輸入 https://ak-console.aliyun.com/#/ 來進行密鑰的建立和檢視。

Spring Boot 內建阿裡雲 OSS 進行檔案存儲開通 OSSSpring Boot 內建 OSS

AccessKey 管理

準備工作做好後,就開始進行項目實戰吧!

Spring Boot 內建 OSS 主要分為以下三步:

加入 OSS 依賴

配置 OSS

示範 OSS 基本操作

加入依賴

首先建立一個 Spring Boot 項目,然後在 pom.xml 加入如下依賴內建 OSS:

建立 OSS 配置

在配置檔案 application.properties 中配置 OSS 的相關參數,具體内容如下:

其中指定了 OSS 的通路域名、密鑰以及存儲空間 Bucket 的名稱等。

然後在 config 包下建立 OSSConfiguration 類,會從配置檔案中讀取到對應的參數,并且把 ossClient 單例化。

服務類

在這裡主要介紹 OSS 的上傳、下載下傳、删除、檢視 URL 等簡單操作,在 service 包下建立 OSSService 類,然後注入 ossClient 和 ossConfiguration。

上傳檔案

首先來看下如何上傳檔案,首先通過 UUID 生成檔案名,防止重複,再建立一個 ObjectMetadata,可以設定使用者自定義的中繼資料以及 HTTP 頭,比如内容長度,ETag 等,最後通過調用 ossClient 的 putObject 方法來完成檔案上傳,并傳回檔案名,具體代碼如下所示:

編寫對應的 Controller 層,調用上傳檔案接口後,在檔案管理中可以看到檔案已經上傳成功了:

Spring Boot 內建阿裡雲 OSS 進行檔案存儲開通 OSSSpring Boot 內建 OSS

擷取檔案清單

可以通過 ListObjectsRequest 建構請求參數,比如設定 Bucket 名稱和列舉檔案的最大個數,然後調用 ossClient 的 listObjects 方法就可以擷取到 objectListing,再擷取檔案的元資訊,最後将檔案名稱傳回,具體代碼如下:

判斷檔案是否存在

判斷檔案是否存在,直接通過 ossClient 的 doesObjectExist 方法就可以進行判斷,傳入的參數為 Bucket 名稱和檔案名稱,具體代碼如下:

下載下傳檔案

下載下傳存儲在 OSS 的檔案,首先需要傳入 Bucket 名稱和檔案名稱調用 ossClient 的 getObject 方法擷取 ossObject,ossObject 包含檔案所在的存儲空間名稱、檔案名稱、檔案元資訊以及一個輸入流,然後調用 ossObject 的 getObjectContent 方法擷取輸入流,然後進行檔案的下載下傳,具體代碼如下:

Spring Boot 內建阿裡雲 OSS 進行檔案存儲開通 OSSSpring Boot 內建 OSS

删除檔案

删除檔案也比較簡單,直接調用 deleteObject 方法,傳入對應的 Bucket 名稱和檔案名稱即可,具體代碼如下:

檢視 URL

擷取檔案的通路位址可以調用 ossClient 的 generatePresignedUrl,在調用的時候還需要設定過期時間,具體代碼如下:

通過調用接口即可傳回檔案對應的 url 位址,我們通過 url 就可以通路圖檔,效果如下:

Spring Boot 內建阿裡雲 OSS 進行檔案存儲開通 OSSSpring Boot 內建 OSS

到此為止,OSS 的基本操作就簡單介紹完了,大家可以多動手試試,不會的可以看下官方的幫助文檔。

跨域規則

阿裡雲 OSS 解決請求跨越問題:進入對應的 Bucket,然後依次點選權限管理->跨越設定->建立規則,然後填寫上對應的規則,具體如下圖所示:

Spring Boot 內建阿裡雲 OSS 進行檔案存儲開通 OSSSpring Boot 內建 OSS

總結

本文的完整代碼在 https://github.com/wupeixuan/SpringBoot-Learn 的 oss 目錄下。

Spring Boot 結合 OSS 還是比較簡單的,大家可以下載下傳項目源碼,自己在本地運作調試這個項目,更好地了解如何在 Spring Boot 中建構基于 OSS 的應用。

留言讨論

最好的關系就是互相成就,大家的點贊、在看、分享、留言就是我創作的最大動力。

參考

https://github.com/wupeixuan/SpringBoot-Learn

https://help.aliyun.com/document_detail/32008.html

Spring Boot 內建阿裡雲 OSS 進行檔案存儲開通 OSSSpring Boot 內建 OSS

●Spring Boot 內建 Elasticsearch 實戰

●Spring Boot 內建 WebSocket 實作服務端推送消息到用戶端

●如何優雅地停止 Spring Boot 應用?

Spring Boot 內建阿裡雲 OSS 進行檔案存儲開通 OSSSpring Boot 內建 OSS

有幫助?在看,轉發走一波

喜歡作者

繼續閱讀