SpringBoot實(shí)現(xiàn)任意文件在線預(yù)覽功能
一 文件在線預(yù)覽
在現(xiàn)代工作與生活環(huán)境中,文件共享與查看已經(jīng)成為日常不可或缺的一部分。不過傳統(tǒng)的文件處理方式要求用戶下載文件到本地后才能查看,這不僅占用了設(shè)備的存儲空間,還可能導(dǎo)致文件傳播效率低下,甚至存在安全隱患。
因此,現(xiàn)在很多應(yīng)用都支持文件在線預(yù)覽,像我們常見的 docx、pptx、xlsx、md、圖片、pdf 等等都可以在瀏覽器中直接查看文件內(nèi)容,無需下載,大大提高了文件處理的便捷性和安全性。
二 kkFileView
kkFileView 是一個(gè)基于 Spring Boot 框架構(gòu)建的開源文件文檔在線預(yù)覽解決方案。它不僅支持廣泛的文件類型,而且使用非常簡單。
kkFileView 主要有如下一些特點(diǎn):
- 廣泛支持的文件類型: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 發(fā)行包和 Docker 鏡像,支持一鍵啟動腳本和豐富的配置項(xiàng),無論是物理機(jī)、虛擬機(jī)還是 Docker 容器環(huán)境,都能輕松部署。
- 跨平臺服務(wù):kkFileView 支持 Windows、Linux 和 MacOS 等多種操作系統(tǒng),實(shí)現(xiàn)了跨平臺的無縫使用。
- 高性能:基于高效的文件讀取與流傳輸策略,kkFileView 在處理大文件時(shí)也能保持流暢,提升用戶體驗(yàn)。
- 安全性:通過設(shè)置訪問權(quán)限和時(shí)效性 token,kkFileView 可以有效保護(hù)文件安全,防止未授權(quán)訪問和惡意操作。
- API 接口:提供 RESTful API,支持 Java、PHP、Python、Go 等多種開發(fā)語言,方便與其他系統(tǒng)集成。
- 開源免費(fèi):kkFileView 遵循 Apache 2.0 許可證,用戶可以根據(jù)需要自由修改和分發(fā)。
- 擴(kuò)展性強(qiáng):支持多種文件類型,且易于添加新的文件類型支持或自定義顯示模板。
三 使用 kkFileView
kkFileView 是獨(dú)立部署運(yùn)行的,所以使用起來非常方便。
3.1 安裝部署
kkFileView 需要先安裝才能使用。這也是官方推薦的使用方式。
安裝有兩種方式。
下載源碼啟動
- 從 https://gitee.com/kekingcn/file-online-preview/releases 下載最新版發(fā)行包
- 解壓
kkFileView-x.x.x文件(Windows用.zip包,Linux/MacOS用.tar.gz包) - 打開解壓后文件夾的 bin 目錄,運(yùn)行 startup 腳本(Windows 下以管理員身份運(yùn)行startup.bat,Linux 以 root 用戶運(yùn)行 startup.sh)
- 瀏覽器訪問本機(jī) 8012 端口 http://127.0.0.1:8012 即可看到項(xiàng)目演示用首頁
Docker 啟動
啟動腳本:
docker run -it -p 8012:8012 keking/kkfileview:4.1.0
如果網(wǎng)絡(luò)不暢,可以通過如下方式啟動:
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 文件預(yù)覽
當(dāng)我們的項(xiàng)目內(nèi)需要預(yù)覽文件時(shí),只需要調(diào)用瀏覽器打開 kkFileView 的預(yù)覽接口,并傳入須要預(yù)覽文件的 url,類似下面這樣:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/js-base64@3.6.0/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>
<button onclick="window.open('http://127.0.0.1:8012/onlinePreview?url='+encodeURIComponent(Base64.encode(url1)));">csv</button>
<br>
<button onclick="window.open('http://127.0.0.1:8012/onlinePreview?url='+encodeURIComponent(Base64.encode(url2)));">png</button>
<br>
<button onclick="window.open('http://127.0.0.1:8012/onlinePreview?url='+encodeURIComponent(Base64.encode(url3)));">doc</button>
<br>
<button onclick="window.open('http://127.0.0.1:8012/onlinePreview?url='+encodeURIComponent(Base64.encode(url4)));">pdf</button>
<br>
<button onclick="window.open('http://127.0.0.1:8012/onlinePreview?url='+encodeURIComponent(Base64.encode(url5)));">pptx</button>
<br>
<button onclick="window.open('http://127.0.0.1:8012/onlinePreview?url='+encodeURIComponent(Base64.encode(url6)));">md</button>
<br>
</body>
</html>url1~url6 是我這里幾個(gè)不同格式文件的訪問地址,調(diào)用 kkFileView 的預(yù)覽接口 http://127.0.0.1:8012/onlinePreview,并將我們的文件 url 作為參數(shù)傳遞進(jìn)去,就可以預(yù)覽文件內(nèi)容了。
是不是很簡單!
這是官方給的使用方式。如果想把這個(gè)項(xiàng)目合并到自己現(xiàn)有項(xiàng)目中,也是可以的,只是稍微麻煩一些,需要分析接口并且手動合并代碼了,不過對于有經(jīng)驗(yàn)的小伙伴來說,應(yīng)該也不是啥難事。
以上就是SpringBoot實(shí)現(xiàn)任意文件在線預(yù)覽功能的詳細(xì)內(nèi)容,更多關(guān)于SpringBoot任意文件預(yù)覽的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Java數(shù)據(jù)結(jié)構(gòu)之實(shí)現(xiàn)跳表
今天帶大家來學(xué)習(xí)Java數(shù)據(jù)結(jié)構(gòu)的相關(guān)知識,文中對用Java實(shí)現(xiàn)跳表作了非常詳細(xì)的圖文解說及代碼示例,對正在學(xué)習(xí)java的小伙伴們有很好地幫助,需要的朋友可以參考下2021-05-05
啟用Spring事務(wù)管理@EnableTransactionManagement示例解析
這篇文章主要為大家介紹了啟用Spring事務(wù)管理@EnableTransactionManagement示例解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-09-09
IDEA自定義setter和getter格式的設(shè)置方法
這篇文章主要介紹了IDEA自定義setter和getter格式的設(shè)置方法,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),需要的朋友參考下吧2023-12-12
java8學(xué)習(xí)教程之lambda表達(dá)式的使用方法
Java8最值得學(xué)習(xí)的特性就是Lambda表達(dá)式,下面這篇文章主要給大家介紹了關(guān)于java8學(xué)習(xí)教程之lambda表達(dá)式使用的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。2017-09-09
SpringCloud組件OpenFeign之默認(rèn)HTTP請求方式詳解
這篇文章主要介紹了SpringCloud組件OpenFeign之默認(rèn)HTTP請求方式詳解,在SpringMvcContract類中有個(gè)這樣的方法processAnnotationOnMethod,見名思意,這個(gè)方法就是處理Feign接口下方法上的注解的,需要的朋友可以參考下2024-01-01
java獲取request中的參數(shù)以及java解析URL問號后的參數(shù)
這篇文章主要介紹了java獲取request中的參數(shù)以及java解析URL問號后的參數(shù)問題,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-12-12
JAVA構(gòu)造函數(shù)不能使用void關(guān)鍵字問題
這篇文章主要介紹了JAVA構(gòu)造函數(shù)不能使用void關(guān)鍵字問題,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-03-03

