在企业应用开发中,文件在线预览是一个高频需求。无论是 oa 系统中的公文查看、网盘中的文件预览,还是在线教育平台的课件展示,用户都希望“点一下就能看”,而不是先下载再打开。
今天给大家推荐一款开源的“万能文件预览”解决方案——kkfileview。
kkfileview 是什么?

kkfileview 是一款基于 spring boot 构建的文件文档在线预览解决方案。它可以作为独立的预览服务部署,通过 http/rest api 与业务系统对接,实现松耦合集成。
简单来说,kkfileview 就是一个开箱即用的文件预览中间件。你只需要把文件 url 传给它,它就能把各种格式的文件转换成可在浏览器中直接查看的页面。
在开源社区,kkfileview 的热度相当高——gitee 上收获 17.2k star,github 上也有 9.9k star。官方将其定位为“开源的万能文件预览系统”。
核心特性
kkfileview 之所以被称为“万能”,是因为它几乎覆盖了你能想到的所有常见文件类型:
| 分类 | 支持的常见格式 |
|---|---|
| office 办公文档 | doc、docx、xls、xlsx、ppt、pptx、csv、tsv、wps、dps、et 等 |
| pdf / ofd / 邮件 | pdf、ofd、rtf、eml、msg、epub 等 |
| 纯文本与代码 | txt、xml、md(渲染)、java、php、py、js、css 等所有纯文本 |
| 压缩包 | zip、rar、7z、tar、gzip 等 |
| 图片与设计 | jpg、png、gif、svg、psd、eps 等 |
| cad / 3d 模型 | dwg、dxf、obj、3ds、stl、fbx、ifc 等 |
| 音视频 | mp3、wav、mp4 等 |
| 其他 | xmind(思维导图)、bpmn(工作流)、drawio 等 |
目前 kkfileview 支持超过 20 种文件大类、上百种文件后缀,覆盖了日常办公和设计的绝大多数场景。
除了格式支持广泛,kkfileview 还有以下特点:
- 部署简便:基于 spring boot 开发,开箱即用
- 灵活接入:支持 url、ftp 等多种预览源
- 独立部署:预览服务与业务系统解耦,方便集成
- 开源免费:采用 apache 2.0 协议,可自由使用和二次开发
部署方式
kkfileview 提供了多种部署方式,你可以根据实际环境选择。
方式一:linux 物理机/虚拟机部署(推荐生产环境)
这是最经典的部署方式,适合对服务器有完全控制权的场景。
1. 环境准备
- java 1.8+
- libreoffice 或 openoffice(用于 office 文档转换)
关于 libreoffice:在 windows 下已内置,centos 或 ubuntu 下启动脚本会自动下载安装。你无需手动安装,直接运行 startup.sh 即可。
2. 下载与解压
从 gitee 发行版下载最新安装包:
# linux/macos 使用 .tar.gz 包 wget https://gitee.com/kekingcn/file-online-preview/releases/download/v4.4.0/kkfileview-4.4.0.tar.gz tar -zxvf kkfileview-4.4.0.tar.gz
3. 启动服务
进入解压后的 bin 目录,执行启动脚本:
cd kkfileview-4.4.0/bin ./startup.sh
首次启动时,脚本会自动检测并安装 libreoffice。如果网络环境良好,整个过程会自动完成。
4. 验证
浏览器访问 http://你的服务器ip:8012,看到 kkfileview 的演示首页即表示部署成功。
5. 解决中文乱码问题(可选)
如果在预览时出现中文乱码,通常是字体缺失导致的。可以将中文字体文件上传至 /usr/share/fonts 目录并赋予权限:
chmod -r 755 *.ttf *.ttf *.ttc source /etc/profile # 重启 kkfileview
方式二:docker 部署(最便捷)
如果你熟悉 docker,这是最快上手的方式。
拉取并运行镜像
# 拉取镜像 docker pull keking/kkfileview:4.1.0 # 运行容器(映射 8012 端口) docker run -it -p 8012:8012 keking/kkfileview:4.1.0
浏览器访问 http://127.0.0.1:8012 即可看到演示首页。
注意事项:官方镜像 keking/kkfileview 已约两年未更新,建议使用社区维护的镜像,如 wangbowen/kkfileview:5.1.0。
方式三:源码运行(适合二次开发)
如果你想对 kkfileview 进行定制开发,可以从源码运行:
git clone git@github.com:kekingcn/kkfileview.git cd kkfileview/server mvn spring-boot:run
或在 idea 中打开 server 模块,直接运行 servermain 类。
项目集成与使用
kkfileview 部署完成后,你的业务系统只需通过 http 接口调用即可实现文件预览。
预览接口地址
http://{kkfileview服务器ip}:8012/onlinepreview?url={base64编码的文件url}
核心参数只有一个:url——需要预览文件的访问地址,且必须经过 base64 编码。
前端集成示例
在前端页面中,可以通过 javascript 打开预览窗口:
<!-- 引入 base64 编码库 -->
<script src="https://cdn.jsdelivr.net/npm/js-base64@3.6.0/base64.min.js"></script>
<script>
// 要预览的文件地址
var fileurl = 'http://your-server.com/files/report.docx';
// 拼接预览url并打开
window.open(
'http://127.0.0.1:8012/onlinepreview?url=' +
encodeuricomponent(base64.encode(fileurl))
);
</script>在 iframe 中嵌入预览
如果希望将预览页面嵌入到自己的页面中,可以使用 iframe:
<iframe
src="http://127.0.0.1:8012/onlinepreview?url=你的base64编码url"
width="100%"
height="600px">
</iframe>spring boot 集成示例
在 spring boot 项目中,可以封装一个工具方法:
@service
public class filepreviewservice {
private static final string preview_url = "http://kkfileview-server:8012/onlinepreview";
public string getpreviewurl(string fileurl) {
string encoded = base64.getencoder().encodetostring(fileurl.getbytes(standardcharsets.utf_8));
return preview_url + "?url=" + urlencoder.encode(encoded, standardcharsets.utf_8);
}
}这样,业务系统只需调用 getpreviewurl() 获取预览地址,返回给前端即可。
与 minio 对象存储结合
kkfileview 与 minio 等对象存储服务配合使用非常常见。流程如下:
- 文件上传到 minio 存储桶
- 获取文件的访问 url
- 将 url 进行 base64 编码后传给 kkfileview
- kkfileview 拉取文件并渲染预览
常见问题与解决方案
1. 启动时报“找不到 office 组件”
linux 系统首次启动时脚本会自动安装 libreoffice。如果自动安装失败(如网络不通),可以手动安装:
# ubuntu/debian sudo apt update sudo apt install libreoffice # centos/rhel sudo yum install libreoffice
2. 预览中文出现乱码
参考上文“解决中文乱码问题”章节,安装中文字体即可。
3. docker 容器无法访问
检查端口映射是否正确,确保防火墙开放了 8012 端口。
4. 官方镜像版本过旧
建议使用社区维护的 wangbowen/kkfileview:5.1.0 镜像。
总结
kkfileview 是一个功能全面、部署简便、社区活跃的开源文件预览解决方案。它能够以极低的成本,为你的应用快速补齐几乎所有常见文件格式的在线预览能力。
| 适用场景 | 推荐方案 |
|---|---|
| 快速体验 / 开发测试 | docker 一键部署 |
| 生产环境(物理机/虚拟机) | linux + startup.sh 部署 |
| 二次开发 / 定制需求 | 源码编译运行 |
无论你是个人开发者、中小企业,还是需要快速实现文件预览功能的企业级项目,kkfileview 都是一个非常值得考虑的选择。
以上就是springboot kkfileview实现文件在线预览的解决方案的详细内容,更多关于springboot kkfileview文件在线预览的资料请关注代码网其它相关文章!
发表评论