日期:2025/04/04 10:21来源:未知 人气:52
大家好,我是小资。今天给大家分享一款开源的文件在线预览系统,支持Windows、MacOS和Linux系统,且支持docker一键部署。
文件预览
开发中网页端管理系统中会有各种类型的文件,比如(pdf、doc、docx、xls、ppt、png等),文件上传后数据库存放的都是文件的链接,除了图片能简单地实现在线预览外,其他文件基本上都需要下载了才能看到里面的内容。而有时候我们只是想看看里面的内容,但要我们自己在代码中实现这么多文件都能在线预览的工作量是很大的,还可能会有浏览器和文件的兼容问题。
今天就在网上看到一个开源项目:kkFileView , 简单使用了下感觉效果还是很不错的。
kkFileView为文件文档在线预览解决方案,该项目使用流行的spring boot搭建,易上手和部署,基本支持主流办公文档的在线预览,如doc,docx,xls,xlsx,ppt,pptx,pdf,txt,zip,rar,图片,视频,音频等等。项目作者也列出了支持预览的20多种大种类的文件。
官方支持的预览文件
kkFileView 已不再免费提供发行安装包了,现在所有的发行版安装包都需要通过星球花钱进行购买,我是在码云下载的源码自己进行编译的,本次演示下载的版本是目前最新的V4.2.1 。大家如果需要发行包,可以私信我。
下面给大家介绍下Windows、Linux、docker三种安装方式,大家可以根据自己的需要进行安装。
开始Windows版本使用前,我们先使用idea编辑器进行简单的演示,最后用idea将其打成jar,以备后续的其他系统的使用。
1、下载源码文件
码云上搜索 kkFileView
2、Idea运行****
运行ServerMain中的main方法就可以。
运行main方法
3、本地预览
项目启动后会自动打开页面,端口号等配置都是可以在config文件夹中修改application.properties配置信息就行修改。具体的配置项代表意思可以进入其官网查询。
本地预览
4、使用maven插件将其打包
打包完的文件就会有Windows和Linux的版本的包。
打包完后的文件
1、将上面打包好的zip的包解压
解压包目录结构
2、运行bin文件夹中的startup.bat
查看log文件夹中的kkFileView.log文件,出现如下图所示的信息(服务启动完成,演示页访问地址)则表示启动成功。
启动日志
3、输入地址进行访问,后续操作就和在编辑器上启动时是一样的了。
1、上传tar包到Linux系统上
上传tar包
2、解压
tar -zxvf kkFileView-4.2.1.tar.gz
3、查看解压目录****
4、进入解压目录并启动
进入bin目录,执行./startup.sh ,如果Linux系统中没有安装LibreOffice的话,它会自动帮我们下载并安装。
安装
5、测试
测试的时间先把Linux的防火墙关闭或者开放8012端口。
6、预览乱码****
字体问题
大部分Linux系统上并没有预装中文字体或字体不全,需要把常用字体拷贝到Linux服务器上,具体操作如下: 下载如下字体包(文中没法放链接,大家可以在评论中或私信我查看)文件解压完整拷贝到Linux下的 /usr/share/fonts目录。然后依次执行mkfontscale 、mkfontdir 、fc-cache使字体生效
编码问题
1、Excel文件编码格式 Excel软件是可以选择用什么编码去保存文件的
目前我们读取Eecel文件是用的服务器操作系统默认编码,可以通过在启动脚本里加入如-Dfile.encoding=UTF-8指定。
excel修改编码
2、生成html网页编码格式
生成html网页也是用的服务器操作系统默认编码(java系统属性:sun.jnu.encoding),比如用浏览器用手动更改编码格式为utf-8或gbk打开没有问题,但是用浏览器默认编码就有问题,此时可调整系统配置文件中的配置项converted.file.charset可解决此类乱码问题。
1、拉取镜像: docker pull keking/kkfileview
2、运行: docker run -dit -p 8012:8012 keking/kkfileview
3、进入运行起来的容器中,然后可以进入 /opt/kkFileView-4.2.1-SNAPSHOT/bin 安装目录,
运行命令 ./showlog.sh 查看日志
普通文件下载url预览
var url = 'http://127.0.0.1:8080/file/test.txt'; //要预览文件的访问地址
window.open('http://127.0.0.1:8012/onlinePreview?url='+encodeURIComponent(Base64.encode(url)));
http/https下载流url预览
很多系统内不是直接暴露文件下载地址,而是请求通过id、code等参数到通过统一的接口,后端通过id或code等参数定位文件,再通过OutputStream输出下载,此时下载url是不带文件后缀名的,预览时需要拿到文件名,传一个参数fullfilename=xxx.xxx来指定文件名,示例如下
var originUrl = 'http://127.0.0.1:8080/filedownload?fileId=1'; //要预览文件的访问地址 var previewUrl = originUrl + '&fullfilename=test.txt' window.open('http://127.0.0.1:8012/onlinePreview?url='+encodeURIComponent(Base64.encode(previewUrl)));
例如nginx的访问地址为 https://file.show.cn 想要使用 https://file.show.cn/preview/来做预览,kkFileView部署在内网192.168.1.140服务器上,需要在nginx中添加反向代理如下:
location /preview {
proxy_pass 192.168.1.140:8012;
}
修改kkFileView的配置文件如下两项
server.context-path = /preview
base.url = https://file.show.cn/preview
使用如下地址来访问预览页面
var url = 'https://file.show.cn/file/test.txt'; //要预览文件的访问地址
window.open('https://file.show.cn/preview/onlinePreview?url='+encodeURIComponent(url));
以上则为文件预览解决方案项目-kkFileView的基本安装和使用,具体的配置文件修改大家可以到官网进行查询从而实现项目的自定义。
如果大家觉得文章内容不错,快去分享给更多小伙伴吧。
创作不易,感谢大家的支持,多多关注、分享、点赞,您的鼓励是我前进的动力。
Java开发-对象存储(阿里oss、腾讯cos、七牛云kodo)文件上传
Mysql自带性能分析器-Explain详解
Java开发-参数校验@NotEmpty、@NotBlank、@NotNull
Java开发-@Autowire警告:不建议使用字段注入