PHP&JAVA实现各种文件的在线预览
前言
碰到一个项目,要求要office系的文件预览,好家伙,我PHP的三方库找了半天,没找到。
就在我准备放弃的时候,发现了一个神奇的东西,kkfileview
,这个东西可以实现各种文件的在线预览,而且还是开源的。
幸亏我之前做过JAVA
,不然真的不知道怎么搞了。
把自己的经历记录下来,方便以后复习。
kkFileView
介绍
kkFileView为文件文档在线预览解决方案,该项目使用流行的spring boot搭建,易上手和部署,基本支持主流办公文档的在线预览,如doc
,xlsx
,ppt
,pdf
,图片
,视频
,音频
等
项目下载与编译
环境要求
- JDK 1.8+
- Maven 3.0+
- LibreOffice或OpenOffice(Windows下已内置,CentOS或Ubuntu下会自动下载安装,MacOS下需要自行安装)
下载源码
1 | git clone [email protected]:kekingcn/kkFileView.git |
使用maven编译打包
1 | cd your-project-dir |
使用docker构建镜像
dockerfile
文件本质是将你编译好的压缩包文件 ADD
到镜像中,所以你需要先编译好压缩包文件。
所以你可以自定义一些你需要的内容,方便以后使用。
你可以创建一个 rebuild.sh
文件,内容如下:1
2
docker build -t wlfpanda1012/kkfileview:v4.4 --no-cache .
使用docker运行
你可以创建个 run.sh
文件,内容如下:1
2
3
4
5
6
docker rm -f kkfileview
docker run --name kkfileview -it \
-p 8012:8012 \
wlfpanda1012/kkfileview:v4.4 /bin/bash
使用
我没有仔细研究,直接使用了使用 在线文件地址
的方式,我只需要预览功能
。1
2
3
4
5
6private function getPreview(string $url): string
{
// 生成预览地址
// 'http://localhost:8012/onlinePreview?url='.urlencode(base64_encode($url));
return config('app.app_file_preview_url').urlencode(base64_encode($url));
}
配合项目使用
其实配合项目使用也比较简单,把编译的文件上传到服务器,然后使用在线文件地址
的方式,就可以了。
当然 nginx
配置也是需要的。
在配置nginx之前,先写2份脚本来自动化上传和解压缩(启动)。
当然之后需要使用守护进程来进行管理。不然万一出问题就麻烦了。
上传脚本
1 |
|
运行脚本
1 |
|
守护进程
1 | [program:kkFileView] |
nginx配置
1 | upstream kkfileview { |
这样子 就可以利用 file.xxx.com/fileview/onlinePreview?url=xxxxxxxx
的方式进行预览了。