SpringBoot實現任意檔案線上預覽功能

👉 這是一個或許對你有用的社群
🐱 一對一交流/面試小冊/簡歷最佳化/求職解惑,歡迎加入芋道快速開發平臺知識星球。下面是星球提供的部分資料:
👉這是一個或許對你有用的開源專案
國產 Star 破 10w+ 的開源專案,前端包括管理後臺 + 微信小程式,後端支援單體和微服務架構。
功能涵蓋 RBAC 許可權、SaaS 多租戶、資料許可權、商城、支付、工作流、大屏報表、微信公眾號、ERPCRMAI 大模型等等功能:
  • Boot 多模組架構:https://gitee.com/zhijiantianya/ruoyi-vue-pro
  • Cloud 微服務架構:https://gitee.com/zhijiantianya/yudao-cloud
  • 影片教程:https://doc.iocoder.cn
【國內首批】支援 JDK 17/21 + SpringBoot 3.3、JDK 8/11 + Spring Boot 2.7 雙版本 

一 檔案線上預覽

在現代工作與生活環境中,檔案共享與檢視已經成為日常不可或缺的一部分。不過傳統的檔案處理方式要求使用者下載檔案到本地後才能檢視,這不僅佔用了裝置的儲存空間,還可能導致檔案傳播效率低下,甚至存在安全隱患。
因此,現在很多應用都支援檔案線上預覽,像我們常見的 docx、pptx、xlsx、md、圖片、pdf 等等都可以在瀏覽器中直接檢視檔案內容,無需下載,大大提高了檔案處理的便捷性和安全性。
基於 Spring Boot + MyBatis Plus + Vue & Element 實現的後臺管理系統 + 使用者小程式,支援 RBAC 動態許可權、多租戶、資料許可權、工作流、三方登入、支付、簡訊、商城等功能
  • 專案地址:https://github.com/YunaiV/ruoyi-vue-pro
  • 影片教程:https://doc.iocoder.cn/video/

二 kkFileView

kkFileView 是一個基於 Spring Boot 框架構建的開原始檔文件線上預覽解決方案。它不僅支援廣泛的檔案型別,而且使用非常簡單。
kkFileView 主要有如下一些特點:
  • 廣泛支援的檔案型別:kkFileView 支援包括但不限於 doc、docx、xls、xlsx、ppt、pptx、pdf、txt 等主流辦公文件,以及 jpg、jpeg、png、gif 等影像檔案,mp3、wav、mp4、flv 等音影片格式,zip、rar、jar 等壓縮包檔案,還有多種類文字及程式碼檔案,如 html、xml、json、yaml、java、py、cpp 等。
  • 易部署性:kkFileView 提供了 ZIP、TAR.GZ 發行包和 Docker 映象,支援一鍵啟動指令碼和豐富的配置項,無論是物理機、虛擬機器還是 Docker 容器環境,都能輕鬆部署。
  • 跨平臺服務:kkFileView 支援 Windows、Linux 和 MacOS 等多種作業系統,實現了跨平臺的無縫使用。
  • 高效能:基於高效的檔案讀取與流傳輸策略,kkFileView 在處理大檔案時也能保持流暢,提升使用者體驗。
  • 安全性:透過設定訪問許可權和時效性 token,kkFileView 可以有效保護檔案安全,防止未授權訪問和惡意操作。
  • API 介面:提供 RESTful API,支援 Java、PHP、Python、Go 等多種開發語言,方便與其他系統整合。
  • 開源免費:kkFileView 遵循 Apache 2.0 許可證,使用者可以根據需要自由修改和分發。
  • 擴充套件性強:支援多種檔案型別,且易於新增新的檔案型別支援或自定義顯示模板。
基於 Spring Cloud Alibaba + Gateway + Nacos + RocketMQ + Vue & Element 實現的後臺管理系統 + 使用者小程式,支援 RBAC 動態許可權、多租戶、資料許可權、工作流、三方登入、支付、簡訊、商城等功能
  • 專案地址:https://github.com/YunaiV/yudao-cloud
  • 影片教程:https://doc.iocoder.cn/video/

三 使用 kkFileView

kkFileView 是獨立部署執行的,所以使用起來非常方便。

3.1 安裝部署

kkFileView 需要先安裝才能使用。這也是官方推薦的使用方式。
安裝有兩種方式。

下載原始碼啟動

  1. 從 https://gitee.com/kekingcn/file-online-preview/releases 下載最新版發行包
  2. 解壓 kkFileView-x.x.x 檔案(Windows.zip 包,Linux/MacOS.tar.gz 包)
  3. 開啟解壓後文件夾的 bin 目錄,執行 startup 指令碼(Windows 下以管理員身份執行startup.bat,Linux 以 root 使用者執行 startup.sh)
  4. 瀏覽器訪問本機 8012 埠 http://127.0.0.1:8012 即可看到專案演示用首頁

Docker 啟動

啟動指令碼:

docker run -it -p 8012:8012 keking/kkfileview:4.1.0

如果網路不暢,可以透過如下方式啟動:

wget https://kkfileview.keking.cn/kkFileView-4.1.0-docker.tar

docker load -i kkFileView-4.1.0-docker.tar

docker run -it -p 8012:8012 keking/kkfileview:4.1.0

啟動之後,頁面如下:

3.2 檔案預覽

當我們的專案內需要預覽檔案時,只需要呼叫瀏覽器開啟 kkFileView 的預覽介面,並傳入須要預覽檔案的 url,類似下面這樣:
<!DOCTYPE html>
<htmllang="en">
<head>
<metacharset="UTF-8">
<title>

Title

</title>
<scripttype="text/javascript"src="https://cdn.jsdelivr.net/npm/[email protected]/base64.min.js"></script>
</head>
<body>
<script>
var

 url1 = 

'http://192.168.43.178:8080/1.csv'

;

var

 url2 = 

'http://192.168.43.178:8080/2.png'

;

var

 url3 = 

'http://192.168.43.178:8080/3.doc'

;

var

 url4 = 

'http://192.168.43.178:8080/4.pdf'

;

var

 url5 = 

'http://192.168.43.178:8080/5.pptx'

;

var

 url6 = 

'http://192.168.43.178:8080/6.md'

;

</script>
<buttononclick="window.open('http://127.0.0.1:8012/onlinePreview?url='+encodeURIComponent(Base64.encode(url1)));">

csv

</button>
<br>
<buttononclick="window.open('http://127.0.0.1:8012/onlinePreview?url='+encodeURIComponent(Base64.encode(url2)));">

png

</button>
<br>
<buttononclick="window.open('http://127.0.0.1:8012/onlinePreview?url='+encodeURIComponent(Base64.encode(url3)));">

doc

</button>
<br>
<buttononclick="window.open('http://127.0.0.1:8012/onlinePreview?url='+encodeURIComponent(Base64.encode(url4)));">

pdf

</button>
<br>
<buttononclick="window.open('http://127.0.0.1:8012/onlinePreview?url='+encodeURIComponent(Base64.encode(url5)));">

pptx

</button>
<br>
<buttononclick="window.open('http://127.0.0.1:8012/onlinePreview?url='+encodeURIComponent(Base64.encode(url6)));">

md

</button>
<br>
</body>
</html>

url1~url6 是我這裡幾個不同格式檔案的訪問地址,呼叫 kkFileView 的預覽介面 http://127.0.0.1:8012/onlinePreview,並將我們的檔案 url 作為引數傳遞進去,就可以預覽檔案內容了。
是不是很簡單!
這是官方給的使用方式。如果想把這個專案合併到自己現有專案中,也是可以的,只是稍微麻煩一些,需要分析介面並且手動合併程式碼了,不過對於有經驗的小夥伴來說,應該也不是啥難事。

歡迎加入我的知識星球,全面提升技術能力。
👉 加入方式,長按”或“掃描”下方二維碼噢
星球的內容包括:專案實戰、面試招聘、原始碼解析、學習路線。
文章有幫助的話,在看,轉發吧。
謝謝支援喲 (*^__^*)

相關文章