文件在线预览

在项目中我们经常会上传附件,比如docx,xlsx,pdf,图片等各种文件。文件存储的时候我们可以考虑 MinIO, 文件预览可以使用 kkFileView。

kkFileView简介

kkFileView 可以用来搭建文件在线预览服务。该项目使用流行的springboot搭建,易上手和部署,基本支持主流办公文档的在线预览,如docx,xlsx,pptx, pdf, txt, zip, 图片,音频、视频等等。

安装

kkFileView 支持在Windows和Linux 下安装

下载地址:https://gitee.com/kekingcn/file-online-preview/releases

安装包需要再 kk开源社区获取,若无账号的,可自行编译

注意,源码开源者建立了知识星球(KK开源社区),每年99元

下载源码后进行编译

项目使用技术
  • redis (可选,默认不用)
  • OpenOffice 或者 LibreOffice( Windows 下已内置,Linux 脚本启动模式会自动安装,Mac OS 下需要手动安装)
下载运行

第一步:pull 项目 https://github.com/kekingcn/file-online-preview.git

git clone https://github.com/kekingcn/file-online-preview.git

第二步:运行 ServerMain 的 main 方法,服务启动后,访问http://localhost:8012/会看到如下界面,代表服务启动成功

文件在线预览-kkFileView_文件预览

与其他项目结合

先运行kkFileView 项目,在前端针对需要预览的路径进行拼接。

【http/https 资源文件预览】如果你的项目需要接入文件预览项目,达到对docx、excel、ppt、jpg等文件的预览效果,那么通过在你的项目中加入下面的代码就可以成功实现:
var url = 'http://127.0.0.1:8080/file/test.txt'; //要预览文件的访问地址
window.open('http://127.0.0.1:8012/onlinePreview?url='+encodeURIComponent(base64Encode(url)));


【http/https 流资源文件预览】很多系统内不是直接暴露文件下载地址,而是请求通过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)));


【ftp 资源文件预览】如果要预览的FTP url是可以匿名访问的(不需要用户名密码),则可以直接通过下载url预览,示例如下
var url = 'ftp://127.0.0.1/file/test.txt'; //要预览文件的访问地址
window.open('http://127.0.0.1:8012/onlinePreview?url='+encodeURIComponent(Base64.encode(url)));


【ftp 加密资源文件预览】如果 FTP 需要认证访问服,可以通过在 url 中加入用户名密码等参数预览,示例如下
var originUrl = 'ftp://127.0.0.1/file/test.txt'; //要预览文件的访问地址
var previewUrl = originUrl + '?ftp.username=xx&ftp.password=xx&ftp.control.encoding=xx';
window.open('http://127.0.0.1:8012/onlinePreview?url='+encodeURIComponent(Base64.encode(previewUrl)));
参考资料