檔案儲存是專案中常見的功能,我們可以用MinIO來實現檔案儲存。但是有時候不僅要實現儲存,還要實現檔案的線上預覽,此時就可以用萬能檔案預覽工具kkFileView來實現。 今天給大家分享下SpringBoot + MinIO + kkFileView如何實現任意檔案的線上預覽功能。
kkFileView簡介
kkFileView是一個萬能的線上預覽開源專案,基於SpringBoot實現,目前在Gitee上已有21k+Star
。它易於上手和部署,支援幾乎所有常見型別檔案的線上預覽。
下面是它目前支援的檔案型別,檔案型別目前還在進一步豐富中:
如果你想深入學習MinIO,這裡有個使用MinIO作為物件儲存的實戰專案,mall專案是一套基於
SpringBoot3
+ Vue 的電商系統(Github標星60K),後端支援多模組和2024最新微服務架構
,採用Docker和K8S部署。包括前臺商城專案和後臺管理系統,能支援完整的訂單流程!涵蓋商品、訂單、購物車、許可權、優惠券、會員、支付等功能!
- Boot專案:https://github.com/macrozheng/mall
- Cloud專案:https://github.com/macrozheng/mall-swarm
- 教程網站:https://www.macrozheng.com
專案演示:
安裝
使用Docker來安裝MinIO和kkFileView是非常方便的,這裡我們將採用此種方式。
MinIO
- 首先使用如下命令下載MinIO的Docker映象;
docker pull minio/minio
- 然後透過如下命令執行MinIO的容器,此時MinIO的視覺化控制檯執行在
9001
埠上,MinIO服務將執行在9090
埠上;
docker run -p 9090:9000 -p 9001:9001 --name minio \
-v /mydata/minio/data:/data \
-e MINIO_ROOT_USER=minioadmin \
-e MINIO_ROOT_PASSWORD=minioadmin \
-d minio/minio server /data --console-address ":9001"
- 然後我們輸入預設賬號密碼
minioadmin:minioadmin
就可以訪問MinIO的控制檯了,控制檯訪問地址:http://192.168.3.101:9001
kkFileView
- 使用如下命令下載kkFileView的Docker映象;
docker pull keking/kkfileview
- 然後透過如下命令執行MinIO的容器,此時容器執行在
8012
埠上;
docker run -p 8012:8012 --name kkfileview \
-d keking/kkfileview
- 接下來我們就可以訪問kkFileView的測試頁,訪問地址:http://192.168.3.101:8012
使用
接下來我們來講解下MinIO和kkFileView的使用。
準備
- 首先我們需要在MinIO中建立一個儲存桶
preview
;
- 然後修改儲存桶的訪問策略為
Pulbic
以便外部訪問;
- 之後我們就可以往儲存桶中上傳檔案了,上傳好測試的檔案;
- 至於這些檔案如何訪問呢,由於我們的MinIO服務執行在
9090
埠上,可以透過如下格式獲取到檔案地址;
http://192.168.3.101:9090/{bucketName}/{fileName}
- 例如我們在儲存桶
preview
中儲存了一個叫avatar.png
的檔案,訪問地址就是這樣的:http://192.168.3.101:9090/preview/avatar.png
檔案預覽
接下來我們來講解下如何透過kkFileView來預覽MinIO中的檔案。
圖片
- 我們需要先開啟kkFileView的預覽測試頁,輸入檔名稱後就可以獲取到預覽連結了:http://192.168.3.101:8012
- 圖片檔案的預覽連結如下:
- 我們可以發現kkFileView的檔案預覽格式是這樣的,透過base64編碼後拼接了一個url引數;
http://192.168.3.101:8012/onlinePreview?url=base64Encode($url)
word
接下來我們再來看下開啟word文件的效果:
再來看下開啟pdf文件的效果:
ppt
再來看下開啟ppt文件的效果:
markdown
再來看下開啟markdown文件的效果:
excel
再來看下開啟excel文件的效果:
壓縮檔案
再來看下開啟壓縮檔案的效果,對於壓縮檔案支援直接開啟預覽內部檔案。
總結
今天帶大家透過SpringBoot + MinIO + kkFileView實現了任意檔案的線上預覽功能,不用寫一行程式碼就能實現,大家如果在專案中遇到這類需求的話可以嘗試下。
專案地址
https://gitee.com/kekingcn/file-online-preview