SpringBoot+kkFileView实现万能文件在线预览

kkFileView 项目简介

此项目为文件文档在线预览项目解决方案,对标业内付费产品有【永中office】【office365】【idocv】等,在取得公司高层同意后以Apache协议开源出来反哺社区,在此特别感谢@唐老大的支持以及@端木详笑的贡献。该项目使用流行的spring
boot搭建,易上手和部署,基本支持主流办公文档的在线预览,如doc,docx,Excel,pdf,txt,zip,rar,图片等等

项目特性

支持word excel ppt,pdf等办公文档 支持txt,java,php,py,md,js,css等所有纯文本
支持zip,rar,jar,tar,gzip等压缩包 支持jpg,jpeg,png,gif等图片预览(翻转,缩放,镜像)
支持mp3,mp4,flv等多媒体文件预览 使用spring boot开发,预览服务搭建部署非常简便
rest接口提供服务,跨平台特性(java,php,python,go,php,…)都支持,应用接入简单方便
支持普通http/https文件下载url、http/https文件下载流url、ftp下载url等多种预览源
提供zip,tar.gz发行包,提供一键启动脚本和丰富的配置项,方便部署使用 提供Docker镜像发行包,方便在容器环境部署
抽象预览服务接口,方便二次开发,非常方便添加其他类型文件预览支持 最最重要Apache协议开源,代码pull下来想干嘛就干嘛

官网及文档

地址:https://kkfileview.keking.cn

在线体验

请善待公共服务,会不定时停用

地址:https://file.keking.cn

项目文档(Project documentation)

详细wiki文档:https://gitee.com/kekingcn/file-online-preview/wikis/pages
中文文档:https://gitee.com/kekingcn/file-online-preview/blob/master/README.md
English document:https://gitee.com/kekingcn/file-online-preview/blob/master/README.en.md

预览展示:

1. 文本预览

支持所有类型的文本文档预览, 由于文本文档类型过多,无法全部枚举,默认开启的类型如下
txt,html,htm,asp,jsp,xml,json,properties,md,gitignore,log,java,py,c,cpp,sql,sh,bat,m,bas,prg,cmd

文本预览效果如下
文本预览效果如下

2. 图片预览

支持jpg,jpeg,png,gif等图片预览(翻转,缩放,镜像),预览效果如下
图片预览

3. word文档预览

支持doc,docx文档预览,word预览有两种模式:一种是每页word转为图片预览,另一种是整个word文档转成pdf,再预览pdf。两种模式的适用场景如下

图片预览:word文件大,前台加载整个pdf过慢
pdf预览:内网访问,加载pdf快
图片预览模式预览效果如下
ord文档预览1在这里插入图片描述

pdf预览模式预览效果如下
在这里插入图片描述

4. ppt文档预览

支持ppt,pptx文档预览,和word文档一样,有两种预览模式
图片预览模式预览效果如下
在这里插入图片描述

pdf预览模式预览效果如下
在这里插入图片描述

5. pdf文档预览

支持pdf文档预览,和word文档一样,有两种预览模式
图片预览模式预览效果如下
在这里插入图片描述

pdf预览模式预览效果如下
在这里插入图片描述

6. excel文档预览

支持xls,xlsx文档预览,预览效果如下
在这里插入图片描述

ps,如碰到excel预览乱码问题,可参考 预览乱码

7. 压缩文件预览

支持zip,rar,jar,tar,gzip等压缩包,预览效果如下
在这里插入图片描述

可点击压缩包中的文件名,直接预览文件,预览效果如下
在这里插入图片描述

8. 多媒体文件预览

理论上支持所有的视频、音频文件,由于无法枚举所有文件格式,默认开启的类型如下
mp3,wav,mp4,flv
如有没有未覆盖全面,可通过配置文件指定多媒体类型
视频预览效果如下
在这里插入图片描述

音频预览效果如下
在这里插入图片描述

9. CAD文档预览

支持CAD dwg文档预览,和word文档一样,有两种预览模式
图片预览模式预览效果如下
在这里插入图片描述

pdf预览模式预览效果如下
在这里插入图片描述

快速开始

项目使用技术

spring boot开发参考指南

freemarker
redisson
jodconverter

依赖外部环境

redis (可选,默认不用)
OpenOffice 或者 LibreOffice( Windows 下已内置,Linux 脚本启动模式会自动安装,Mac OS 下需要手动安装)

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

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

输入图片说明
在这里插入图片描述

下面是使用 Spring Boot + Vue 实现 KKFileView 与 MinIO 文件预览的具体操作步骤: 1. 首先,需要安装并启动 MinIO,可以从官网下载并安装对应平台的版本。 2. 创建一个新的 MinIO 存储桶,并将需要预览文件上传到该存储桶中。 3. 使用 Spring Boot 创建一个新的 Web 应用程序,并添加 MinIO 的客户端依赖,如下所示: ```xml <dependency> <groupId>io.minio</groupId> <artifactId>minio</artifactId> <version>6.1.0</version> </dependency> ``` 4. 创建一个 MinIO 客户端实例,并使用该实例获取存储桶中的文件 URL,如下所示: ```java import io.minio.MinioClient; import io.minio.errors.MinioException; public class MinioUtils { private static final String ENDPOINT = "your-minio-endpoint"; private static final String ACCESS_KEY = "your-minio-access-key"; private static final String SECRET_KEY = "your-minio-secret-key"; private static final String BUCKET_NAME = "your-bucket-name"; private static final MinioClient minioClient; static { try { minioClient = new MinioClient(ENDPOINT, ACCESS_KEY, SECRET_KEY); } catch (Exception e) { throw new RuntimeException(e); } } public static String getFileUrl(String fileName) { try { return minioClient.presignedGetObject(BUCKET_NAME, fileName); } catch (Exception e) { throw new RuntimeException(e); } } } ``` 其中,getFileUrl 方法用于获取指定文件在 MinIO 存储桶中的 URL。 5. 使用 Vue 创建一个新的 Web 界面,并引入 KKFileViewJavaScript 文件,如下所示: ```html <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>文件预览</title> <script src="https://cdn.koalaxiezi.com/kkfileview/4.0.6/kkfileview.min.js"></script> <link href="https://cdn.koalaxiezi.com/kkfileview/4.0.6/kkfileview.min.css" rel="stylesheet"> </head> <body> <div id="app"></div> <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script> <script src="app.js"></script> </body> </html> ``` 6. 在 Vue 的 app.js 文件中,使用 Axios 获取 MinIO 存储桶中的文件 URL,并将其传递给 KKFileView 进行预览,如下所示: ```javascript import axios from 'axios' import KKFileView from 'kkfileview' new Vue({ el: '#app', created() { axios.get('/getFileUrl?fileName=test.pdf').then((response) => { KKFileView.open(response.data) }) } }) ``` 其中,getFileUrl 接口用于返回指定文件在 MinIO 存储桶中的 URL,response.data 是从接口返回的 URL。 7. 在 Spring Boot 应用程序中,创建 getFileUrl 接口,用于返回指定文件在 MinIO 存储桶中的 URL,如下所示: ```java import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; @RestController public class FileController { @GetMapping("/getFileUrl") public String getFileUrl(@RequestParam String fileName) { return MinioUtils.getFileUrl(fileName); } } ``` 8. 启动 Spring Boot 应用程序和 Vue Web 界面,访问 Vue Web 界面,即可在线预览 MinIO 存储桶中的文件。 需要注意的是,为了保证文件访问的安全性,需要在 MinIO 中设置适当的访问权限,确保只有授权的用户才能访问存储桶中的文件。同时,KKFileView 也提供了一些安全设置,如设置访问密码等,可以进一步加强文件访问的安全性。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

菜鸟小杰子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值