SpringBoot实现任意文件在线预览功能

 更新时间:2025年07月29日 10:19:33   作者:白露与泡影  
在现代工作与生活环境中,文件共享与查看已经成为日常不可或缺的一部分,不过传统的文件处理方式要求用户下载文件到本地后才能查看,不仅占用了设备的存储空间,还可能导致文件传播效率低下,所以本文给大家介绍了SpringBoot实现任意文件在线预览功能,需要的朋友可以参考下

一 文件在线预览

在现代工作与生活环境中,文件共享与查看已经成为日常不可或缺的一部分。不过传统的文件处理方式要求用户下载文件到本地后才能查看,这不仅占用了设备的存储空间,还可能导致文件传播效率低下,甚至存在安全隐患。

因此,现在很多应用都支持文件在线预览,像我们常见的 docx、pptx、xlsx、md、图片、pdf 等等都可以在浏览器中直接查看文件内容,无需下载,大大提高了文件处理的便捷性和安全性。

二 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 许可证,用户可以根据需要自由修改和分发。
  • 扩展性强:支持多种文件类型,且易于添加新的文件类型支持或自定义显示模板。

三 使用 kkFileView

kkFileView 是独立部署运行的,所以使用起来非常方便。

3.1 安装部署

kkFileView 需要先安装才能使用。这也是官方推荐的使用方式。

安装有两种方式。

下载源码启动

  • 从 https://gitee.com/kekingcn/file-online-preview/releases 下载最新版发行包
  • 解压 kkFileView-x.x.x 文件(Windows 用 .zip 包,Linux/MacOS 用 .tar.gz 包)
  • 打开解压后文件夹的 bin 目录,运行 startup 脚本(Windows 下以管理员身份运行startup.bat,Linux 以 root 用户运行 startup.sh)
  • 浏览器访问本机 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>
<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 是我这里几个不同格式文件的访问地址,调用 kkFileView 的预览接口 http://127.0.0.1:8012/onlinePreview,并将我们的文件 url 作为参数传递进去,就可以预览文件内容了。

是不是很简单!

这是官方给的使用方式。如果想把这个项目合并到自己现有项目中,也是可以的,只是稍微麻烦一些,需要分析接口并且手动合并代码了,不过对于有经验的小伙伴来说,应该也不是啥难事。

以上就是SpringBoot实现任意文件在线预览功能的详细内容,更多关于SpringBoot任意文件预览的资料请关注脚本之家其它相关文章!

相关文章

  • Springboot整合实现邮件发送的原理详解

    Springboot整合实现邮件发送的原理详解

    SpringBoot集成邮件服务非常简单,通过简单的学习即可快速掌握邮件业务类的核心逻辑和企业邮件的日常服务,本文给大家分享Springboot整合实现邮件发送的原理,一起看看吧
    2021-06-06
  • Java分形绘制山脉模型

    Java分形绘制山脉模型

    这篇文章主要为大家详细介绍了Java分形绘制山脉模型,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-01-01
  • 解决Intellij IDEA运行报Command line is too long的问题

    解决Intellij IDEA运行报Command line is too long的问题

    这篇文章主要介绍了解决Intellij IDEA运行报Command line is too long的问题,本文通过两种方案给大家详细介绍,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-05-05
  • Java数据结构之ArrayList从顺序表到实现

    Java数据结构之ArrayList从顺序表到实现

    Java中的ArrayList是一种基于数组实现的数据结构,支持动态扩容和随机访问元素,可用于实现顺序表等数据结构。ArrayList在内存中连续存储元素,支持快速的随机访问和遍历。通过学习ArrayList的实现原理和使用方法,可以更好地掌握Java中的数据结构和算法
    2023-04-04
  • SpringBoot中请求参数绑定及使用详解

    SpringBoot中请求参数绑定及使用详解

    这篇文章主要介绍了SpringBoot中请求参数绑定及使用详解,在Web应用程序中,请求参数绑定是非常重要的操作,Spring Boot框架使得请求参数绑定变得非常简单,通过使用注解和预定义的类可以轻松地实现此操作,需要的朋友可以参考下
    2023-08-08
  • java 如何查看jar包加载顺序

    java 如何查看jar包加载顺序

    这篇文章主要介绍了java 如何查看jar包加载顺序,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-12-12
  • Spring的注解配置与XML配置之间的比较

    Spring的注解配置与XML配置之间的比较

    在很多情况下,注释配置比 XML 配置更受欢迎,注释配置有进一步流行的趋势。Spring 2.5 的一大增强就是引入了很多注释类,现在您已经可以使用注释配置完成大部分 XML 配置的功能
    2013-09-09
  • java图片压缩工具类

    java图片压缩工具类

    这篇文章主要为大家详细介绍了java图片压缩工具类,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-02-02
  • java的equals和==的比较示例

    java的equals和==的比较示例

    这篇文章主要介绍了java的equals和==的比较示例,需要的朋友可以参考下
    2014-04-04
  • Java数组的定义、初始化、及二维数组用法分析

    Java数组的定义、初始化、及二维数组用法分析

    这篇文章主要介绍了Java数组的定义、初始化、及二维数组用法,结合具体实例形式分析了java数组概念、功能、数组定义、静态数组、动态数组、二维数组等相关使用技巧,需要的朋友可以参考下
    2019-01-01

最新评论