LeiTao
LeiTao
发布于 2026-10-13 / 13 阅读
0
0

kkFileView (Docker)部署与使用笔记

一、Docker 部署(最新版)

1.拉取官方镜像

docker pull keking/kkfileview:latest

2.启动容器(推荐配置)

docker run -d \
  --name kkfileview \
  --restart always \
  --privileged=true \
  -p 8012:8012 \
  -v /data/kkfileview/file:/opt/kkFileView/file \
  -v /data/kkfileview/config:/opt/kkFileView/config \
  -e KK_JVM_OPTS="-Xms512m -Xmx1024m" \
  keking/kkfileview:latest

3.验证部署

浏览器访问:http://你的服务器IP:8012,看到演示页面即部署成功。

二、前端接入(完整代码)

1.纯原生 JS(无依赖,可直接在控制台运行)

// ===== 配置区(修改为你的实际地址)=====
const kkHost = "http://172.18.10.31:8012"; // kkFileView服务地址
const fileUrl = "http://172.18.10.31/IqcBill/09fe838d04354b4f814473a8e1692e62/13_001.png";

// ===== Base64编码函数(浏览器原生实现)=====
function base64Encode(str) {
  return btoa(encodeURIComponent(str).replace(/%([0-9A-F]{2})/g, (match, p1) => {
    return String.fromCharCode('0x' + p1);
  }));
}

// ===== 生成预览地址并打开=====
const base64Str = base64Encode(fileUrl);
const finalUrl = `${kkHost}/onlinePreview?url=${encodeURIComponent(base64Str)}`;

console.log("预览地址:", finalUrl);
window.open(finalUrl);

2.标准 HTML 页面(引入官方库)

<!DOCTYPE html>
<html>
<head>
  <meta charset="UTF-8">
  <title>kkFileView 预览测试</title>
  <!-- 引入官方js-base64库 -->
  <script src="https://cdn.jsdelivr.net/npm/js-base64@3.6.0/base64.min.js"></script>
</head>
<body>
  <button onclick="previewFile()">点击预览图片</button>

  <script>
    // 配置信息
    const kkHost = "http://172.18.10.31:8012";
    const fileUrl = "http://172.18.10.31/IqcBill/09fe838d04354b4f814473a8e1692e62/13_001.png";

    function previewFile() {
      // 核心编码步骤:先Base64,再URL编码
      const base64Str = Base64.encode(fileUrl);
      const previewUrl = `${kkHost}/onlinePreview?url=${encodeURIComponent(base64Str)}`;
      window.open(previewUrl);
    }
  </script>
</body>
</html>

3.Vue 组件示例(Vue2/Vue3 通用)

<template>
  <button @click="handlePreview">预览文件</button>
</template>

<script>
import { Base64 } from 'js-base64'; // 需先安装:npm install js-base64

export default {
  methods: {
    handlePreview() {
      const kkHost = "http://172.18.10.31:8012";
      const fileUrl = "http://172.18.10.31/IqcBill/09fe838d04354b4f814473a8e1692e62/13_001.png";
      
      // 编码生成最终地址
      const encodedUrl = encodeURIComponent(Base64.encode(fileUrl));
      window.open(`${kkHost}/onlinePreview?url=${encodedUrl}`);
    }
  }
}
</script>

三、直接可用的预览地址(你的示例文件)

http://172.18.10.31:8012/onlinePreview?url=aHR0cDovLzE3Mi4xOC4xMC4zMS9JcWNCaWxsLzA5ZmU4MzhkMDQzNTRiNGY4MTQ0NzNhOGUxNjkyZTYyLzEzXzAwMS5wbmc%3D

四、常见问题与排查

  1. Uncaught SyntaxError: missing ) after argument list

原因:JS 代码中 base64Encode 函数的参数(文件地址)未加引号,或 base64Encode 不是浏览器原生方法。

解决:使用上述笔记中的编码函数,或引入 js-base64 库。

2. 500 Whitelabel Error Page

原因 1:URL 参数错误,地址栏中直接写了 JS 代码(如 encodeURIComponent(base64Encode(...))),kkFileView 无法解析。

解决:必须先在前端完成编码,地址栏只能传编码后的字符串。

原因 2:kkFileView 容器无法访问文件地址。

进入容器测试文件地址连通性

docker exec -it kkfileview curl http://172.18.10.31/IqcBill/09fe838d04354b4f814473a8e1692e62/13_001.png

原因 3:文件地址不可访问(如权限不足、网络不通)。

排查:用浏览器直接打开文件地址,确认能正常加载。

3. 中文乱码 / 方框字

解决:挂载中文字体到容器,或修改配置文件指定字体路径。

五、常用运维命令

查看实时日志

docker logs -f kkfileview

重启容器

docker restart kkfileview

停止并删除容器

docker stop kkfileview && docker rm kkfileview

更新镜像(重新拉取最新版并重建容器)

docker pull keking/kkfileview:latest

docker stop kkfileview && docker rm kkfileview


评论