mirror of
https://gitee.com/kekingcn/file-online-preview.git
synced 2026-04-28 02:56:44 +00:00
479 lines
19 KiB
Java
479 lines
19 KiB
Java
###############################################################################
|
||
# 一、服务器基础配置(需要重启生效)
|
||
###############################################################################
|
||
|
||
# 服务器端口号,默认8012
|
||
# 可以通过环境变量 KK_SERVER_PORT 覆盖
|
||
server.port = ${KK_SERVER_PORT:8012}
|
||
|
||
# 应用上下文路径,默认为根路径 /
|
||
# 可以通过环境变量 KK_CONTEXT_PATH 覆盖
|
||
server.servlet.context-path = ${KK_CONTEXT_PATH:/}
|
||
|
||
# 字符编码设置,统一使用UTF-8
|
||
server.servlet.encoding.charset = utf-8
|
||
|
||
# 启用响应压缩,减少网络传输
|
||
server.compression.enabled = true
|
||
server.compression.min-response-size = 2048
|
||
server.compression.mime-types = application/javascript,text/css,application/json,application/xml,text/html,text/xml,text/plain,font/woff,application/font-woff,font/eot,image/svg+xml,image/x-icon
|
||
|
||
# 文件上传大小限制,默认500MB
|
||
# 注意:需要同时设置spring.servlet.multipart.max-file-size和max-request-size
|
||
spring.servlet.multipart.max-file-size = 500MB
|
||
spring.servlet.multipart.max-request-size = 500MB
|
||
|
||
# FreeMarker模板引擎配置
|
||
spring.freemarker.template-loader-path = classpath:/web/
|
||
spring.freemarker.cache = false
|
||
spring.freemarker.charset = UTF-8
|
||
spring.freemarker.check-template-location = true
|
||
spring.freemarker.content-type = text/html
|
||
spring.freemarker.expose-request-attributes = true
|
||
spring.freemarker.expose-session-attributes = true
|
||
spring.freemarker.request-context-attribute = request
|
||
spring.freemarker.suffix = .ftl
|
||
|
||
# Spring Boot Actuator监控端点配置
|
||
management.endpoints.web.exposure.include = health,info,metrics
|
||
management.endpoint.health.show-details = always
|
||
management.health.defaults.enabled = true
|
||
|
||
|
||
###############################################################################
|
||
# 二、Office文档处理配置(部分支持动态配置)
|
||
###############################################################################
|
||
|
||
# Office组件安装路径,默认为自动查找
|
||
# Windows示例(注意双反斜杠):C:\\Program Files (x86)\\OpenOffice 4
|
||
# Linux示例:/opt/libreoffice
|
||
# MacOS示例:/Applications/LibreOffice.app/Contents
|
||
office.home = ${KK_OFFICE_HOME:default}
|
||
|
||
# Office组件服务端口,支持多个端口实现负载均衡
|
||
office.plugin.server.ports = 2001,2002
|
||
|
||
# Office组件任务超时时间,默认5分钟
|
||
office.plugin.task.timeout = 5m
|
||
|
||
# 每个进程最大任务数,防止内存溢出
|
||
office.plugin.task.maxtasksperprocess = 200
|
||
|
||
# 任务执行超时时间,默认5分钟
|
||
office.plugin.task.taskexecutiontimeout = 5m
|
||
|
||
# Office文档分页范围,支持动态配置
|
||
# 默认false,开启后可以指定转换的页面范围
|
||
office.pagerange = ${KK_OFFICE_PAGERANGE:false}
|
||
|
||
# Office文档水印功能,支持动态配置
|
||
# 默认false,开启后会在Office文档上添加水印
|
||
office.watermark = ${KK_OFFICE_WATERMARK:false}
|
||
|
||
# Office图片质量,1-100,默认80
|
||
# 值越高图片质量越好,但文件越大
|
||
office.quality = ${KK_OFFICE_QUALITY:80}
|
||
|
||
# Office图片最大分辨率,默认150
|
||
# 控制生成图片的最大分辨率
|
||
office.maximageresolution = ${KK_OFFICE_MAXIMAGERESOLUTION:150}
|
||
|
||
# 导出Office书签,支持动态配置
|
||
# 默认true,转换PDF时保留书签
|
||
office.exportbookmarks = ${KK_OFFICE_EXPORTBOOKMARKS:true}
|
||
|
||
# 是否将Office文档中的批注作为PDF注释导出,默认为true(导出)
|
||
# 保留批注便于文档审阅
|
||
office.exportnotes = ${KK_OFFICE_EXPORTNOTES:true}
|
||
|
||
# 加密文档生成的PDF是否添加密码,默认为true(添加)
|
||
# 密码为原始加密文档的密码,增强文档安全性
|
||
office.documentopenpasswords = ${KK_OFFICE_DOCUMENTOPENPASSWORD:true}
|
||
|
||
# Excel文档(xlsx)的前端解析方式,默认为web(Web端解析)
|
||
# web: 使用前端SheetJS库解析,减轻服务器压力
|
||
# image: 服务器转换为图片,兼容性更好
|
||
office.type.web = ${KK_OFFICE_TYPE_WEB:web}
|
||
|
||
# Office文档预览类型
|
||
# 支持动态配置,可选值:image/pdf,默认使用pdf模式
|
||
office.preview.type = ${KK_OFFICE_PREVIEW_TYPE:pdf}
|
||
|
||
# 是否关闭Office预览模式切换开关,默认为true(关闭切换)
|
||
# 设置为false时,用户可以在图片和PDF模式间切换
|
||
office.preview.switch.disabled = ${KK_OFFICE_PREVIEW_SWITCH_DISABLED:true}
|
||
|
||
|
||
###############################################################################
|
||
# 三、CAD文件处理配置(支持动态配置)
|
||
###############################################################################
|
||
|
||
# CAD文件预览类型
|
||
# svg: 转换为SVG矢量格式(缩放不失真)
|
||
# pdf: 转换为PDF格式(便于打印和标注)
|
||
cad.preview.type = ${KK_CAD_PREVIEW_TYPE:svg}
|
||
|
||
# Cad转换模块设置(aspose-cad=1 ,cadviewer=3)
|
||
# aspose-cad 默认集成到系统,但是特别吃服务器性能 (支持转换格式为 svg、pdf)
|
||
# cadviewer 下载地址 https://cadviewer.com/alldownloads/autoxchange/ 更具自己系统下载转换包(支持转换格式为 svg、svgz、pdf)
|
||
# 1=aspose-cad 转换格式为 pdf,svg,tif 支持类型最多
|
||
# 2=cadviewer 转换格式为 pdf,svg 支持的类型 dwg dxf dwf
|
||
cad.conversionmodule = 1
|
||
|
||
# Cad 后端转换包路径 (linux 严格注意大小写)
|
||
# cadviewer windows 修改名称为 cadviewer.exe inux修改名称为 cadviewer 需要安装字体
|
||
# cadviewer 字体下载 https://cadviewer.com/downloads/fonts/fonts.tar.gz 放在 cad.file.path 目录里面的fonts.
|
||
cad.cadconverterpath = false
|
||
|
||
|
||
# CAD文件处理线程数
|
||
cad.thread = ${KK_CAD_THREAD:5}
|
||
|
||
# CAD文件处理超时时间(秒)
|
||
cad.timeout = ${KK_CAD_TIMEOUT:90}
|
||
|
||
|
||
###############################################################################
|
||
# 四、PDF文件处理配置(支持动态配置)
|
||
###############################################################################
|
||
|
||
# 是否禁止PDF演示模式,默认为true(禁止)
|
||
pdf.presentationMode.disable = ${KK_PDF_PRESENTATION_MODE_DISABLE:true}
|
||
|
||
# 是否禁止PDF文件菜单中的"打开文件"选项,默认为true(禁止)
|
||
pdf.openFile.disable = ${KK_PDF_OPEN_FILE_DISABLE:true}
|
||
|
||
# 是否禁止PDF打印功能,默认为true(禁止)
|
||
pdf.print.disable = ${KK_PDF_PRINT_DISABLE:true}
|
||
|
||
# 是否禁止PDF下载功能,默认为true(禁止)
|
||
pdf.download.disable = ${KK_PDF_DOWNLOAD_DISABLE:true}
|
||
|
||
# 是否禁止PDF书签/大纲功能,默认为true(禁止)
|
||
pdf.bookmark.disable = ${KK_PDF_BOOKMARK_DISABLE:true}
|
||
|
||
# 是否禁止PDF编辑功能(注释、表单等),默认为false(允许编辑)
|
||
pdf.disable.editing = ${KK_PDF_DISABLE_EDITING:false}
|
||
|
||
# PDF处理最大线程数,控制并发处理能力
|
||
pdf.max.threads = 10
|
||
|
||
# PDF处理超时配置
|
||
pdf.timeout.small = 90
|
||
pdf.timeout.medium = 180
|
||
pdf.timeout.large = 300
|
||
pdf.timeout.xlarge = 600
|
||
|
||
# PDF智能DPI优化
|
||
# 是否启用PDF DPI智能调整,默认为true(启用)
|
||
# 根据PDF页数自动调整DPI,平衡清晰度和性能
|
||
pdf.dpi.enabled = true
|
||
|
||
# PDF转图片的基准DPI,默认为144
|
||
# 当DPI优化禁用时使用此值
|
||
pdf2jpg.dpi = ${KK_PDF2JPG_DPI:144}
|
||
|
||
# 智能DPI分级配置
|
||
# 小文件(0-50页):150 DPI(高质量)
|
||
pdf.dpi.small = 150
|
||
# 中等文件(50-100页):120 DPI(平衡质量与性能)
|
||
pdf.dpi.medium = 120
|
||
# 大文件(100-200页):96 DPI(优化性能)
|
||
pdf.dpi.large = 96
|
||
# 超大文件(200-500页):72 DPI(快速转换)
|
||
pdf.dpi.xlarge = 72
|
||
# 巨量文件(>500页):72 DPI(最小资源消耗)
|
||
pdf.dpi.xxlarge = 72
|
||
|
||
|
||
###############################################################################
|
||
# 五、TIF文件处理配置(支持动态配置)
|
||
###############################################################################
|
||
|
||
# TIF文件预览类型
|
||
# tif: 使用前端Tiff.js插件直接浏览(需要浏览器支持)
|
||
# jpg: 服务器转换为JPG格式后显示
|
||
# pdf: 服务器转换为PDF格式显示
|
||
tif.preview.type = ${KK_TIF_PREVIEW_TYPE:tif}
|
||
|
||
# TIF文件处理线程数
|
||
tif.thread = 5
|
||
|
||
# TIF文件处理超时时间(秒)
|
||
tif.timeout = 90
|
||
|
||
|
||
###############################################################################
|
||
# 六、媒体文件处理配置(支持动态配置)
|
||
###############################################################################
|
||
|
||
# 媒体文件类型(音频、视频)
|
||
media = ${KK_MEDIA:mp3,wav,mp4,flv,mpd,m3u8,ts,mpeg,m4a}
|
||
|
||
# 需要转换的媒体文件类型
|
||
convertMedias = ${KK_CONVERTMEDIAS:avi,mov,wmv,mkv,3gp,rm,mpeg}
|
||
|
||
# 媒体文件超时控制
|
||
media.timeout.enabled = true
|
||
media.small.file.timeout = 30
|
||
media.medium.file.timeout = 60
|
||
media.large.file.timeout = 180
|
||
media.xl.file.timeout = 300
|
||
media.xxl.file.timeout = 600
|
||
media.xxxl.file.timeout = 1200
|
||
|
||
# 媒体文件转换最大大小(MB)
|
||
media.convert.max.size = 300
|
||
|
||
# 是否禁用视频格式转换功能,默认为false(禁用)
|
||
# ⚠️ 重要:视频转换非常消耗CPU和内存资源
|
||
media.convert.disable = ${KK_MEDIA_CONVERT_DISABLE:false}
|
||
|
||
|
||
###############################################################################
|
||
# 七、文件存储与缓存配置(支持动态配置)
|
||
###############################################################################
|
||
|
||
# 预览生成资源的存储路径,默认为应用根路径下的file目录
|
||
# Windows示例:D:\\kkFileview\\(注意双反斜杠)
|
||
# Linux示例:/opt/kkfileview/file/
|
||
# 重要:确保应用有该目录的读写权限
|
||
file.dir = ${KK_FILE_DIR:default}
|
||
|
||
# 允许预览的本地文件夹路径,默认为default(禁止所有本地文件预览)
|
||
# ⚠️ 安全警告:配置此路径可能允许访问系统文件,请谨慎配置
|
||
# Windows示例(注意前面加反斜杠):\D:\\kkFileview\\1\\1.txt
|
||
# Linux示例(注意前面加正斜杠):/opt/1.txt
|
||
# 使用file协议访问:file://d:/1/1.txt(Windows)或 file:/opt/1/1.txt(Linux)
|
||
local.preview.dir = ${KK_LOCAL_PREVIEW_DIR:default}
|
||
|
||
# 是否启用缓存,支持动态配置
|
||
# 默认true,开启缓存提高性能
|
||
cache.enabled = ${KK_CACHE_ENABLED:true}
|
||
|
||
# 缓存实现类型,默认为jdk(使用JDK内置对象实现)
|
||
# 可选值:
|
||
# jdk: JDK内置ConcurrentHashMap,单机部署推荐
|
||
# redis: Redis分布式缓存,集群部署推荐
|
||
# default: 内嵌RocksDB,支持持久化
|
||
cache.type = ${KK_CACHE_TYPE:jdk}
|
||
|
||
# Redis部署模式,默认为single(单机模式)
|
||
# 可选值:
|
||
# single: 单机模式(默认)
|
||
# cluster: 集群模式
|
||
# sentinel: 哨兵模式(高可用)
|
||
# master-slave: 主从模式
|
||
spring.redisson.mode = single
|
||
# Redis连接地址,支持多种格式:
|
||
# 单机模式:redis://127.0.0.1:6379
|
||
# 集群模式:redis://node1:6379,redis://node2:6379,redis://node3:6379
|
||
# 哨兵模式:redis://sentinel1:26379,redis://sentinel2:26379
|
||
spring.redisson.address = ${KK_SPRING_REDISSON_ADDRESS:redis://127.0.0.1:6379}
|
||
# Redis连接密码,无密码时留空
|
||
spring.redisson.password = ${KK_SPRING_REDISSON_PASSWORD:}
|
||
# Redis数据库索引,默认为0(0-15)
|
||
# 不同业务可使用不同数据库隔离
|
||
spring.redisson.database = ${KK_SPRING_REDISSON_DATABASE:0}
|
||
|
||
# 缓存清理配置
|
||
# 是否启用缓存自动清理,默认为true(启用)
|
||
# 定期清理过期缓存,避免磁盘空间无限增长
|
||
cache.clean.enabled = ${KK_CACHE_CLEAN_ENABLED:true}
|
||
# 缓存自动清理时间,使用Quartz cron表达式,默认为每天凌晨3点执行
|
||
# 表达式格式:秒 分 时 日 月 周 年(可选)
|
||
# 0 0 3 * * ? 表示每天3:00:00执行清理
|
||
cache.clean.cron = ${KK_CACHE_CLEAN_CRON:0 0 3 * * ?}
|
||
|
||
|
||
###############################################################################
|
||
# 八、安全与访问控制配置(支持动态配置)
|
||
###############################################################################
|
||
|
||
# 提供预览服务的地址,默认从请求url读,如果使用nginx等反向代理,需要手动设置
|
||
# base.url = https://file.keking.cn
|
||
base.url = ${KK_BASE_URL:default}
|
||
|
||
# 信任站点白名单配置,多个用','隔开
|
||
# ⚠️ 安全提示:为防止SSRF攻击,强烈建议配置信任主机白名单
|
||
# ⚠️ 如果不配置,系统将默认拒绝所有外部文件预览请求
|
||
# 配置示例:
|
||
# trust.host = kkview.cn,yourdomain.com,cdn.example.com
|
||
# 如果需要允许所有域名(不推荐,仅用于测试环境),请设置为:
|
||
# trust.host = *
|
||
# 当前配置:默认本机测试 (正式启用请修改)
|
||
trust.host = ${KK_TRUST_HOST:default}
|
||
|
||
# 不信任站点黑名单配置,多个用逗号隔开
|
||
# 黑名单优先级高于白名单,设置后将禁止预览来自这些站点的文件
|
||
# 建议配置:禁止访问内网地址和本地地址,防止内部信息泄露
|
||
# 配置示例:
|
||
# not.trust.host = localhost,127.0.0.1,0.0.0.0,192.168.*,10.*,172.16.*,172.17.*,172.18.*,172.19.*,172.20.*,172.21.*,172.22.*,172.23.*,172.24.*,172.25.*,172.26.*,172.27.*,172.28.*,172.29.*,172.30.*,172.31.*
|
||
not.trust.host = ${KK_NOT_TRUST_HOST:default}
|
||
|
||
# 禁止访问的文件类型,安全限制
|
||
# 支持动态配置,格式:exe,dll,dat
|
||
prohibit = ${KK_PROHIBIT:exe,dll,dat}
|
||
|
||
# 是否忽略SSL证书验证,默认为true(忽略)
|
||
# 用于开发环境或自签名证书场景
|
||
# 生产环境建议设置为false,启用完整的证书验证
|
||
kk.ignore.ssl = false
|
||
|
||
# 是否启用URL重定向功能,默认为true(启用)
|
||
# 用于处理文件下载、外部资源引用等场景
|
||
kk.enable.redirect = false
|
||
|
||
|
||
###############################################################################
|
||
# 九、水印配置(支持动态配置)
|
||
###############################################################################
|
||
|
||
# 水印文本内容
|
||
# 可以通过环境变量 WATERMARK_TXT 覆盖
|
||
watermark.txt = ${WATERMARK_TXT:}
|
||
|
||
# 水印X轴间距
|
||
# 可以通过环境变量 WATERMARK_X_SPACE 覆盖
|
||
watermark.x.space = ${WATERMARK_X_SPACE:10}
|
||
|
||
# 水印Y轴间距
|
||
# 可以通过环境变量 WATERMARK_Y_SPACE 覆盖
|
||
watermark.y.space = ${WATERMARK_Y_SPACE:10}
|
||
|
||
# 水印字体
|
||
# 可以通过环境变量 WATERMARK_FONT 覆盖
|
||
watermark.font = ${WATERMARK_FONT:微软雅黑}
|
||
|
||
# 水印字体大小
|
||
# 可以通过环境变量 WATERMARK_FONTSIZE 覆盖
|
||
watermark.fontsize = ${WATERMARK_FONTSIZE:18px}
|
||
|
||
# 水印颜色
|
||
# 可以通过环境变量 WATERMARK_COLOR 覆盖
|
||
watermark.color = ${WATERMARK_COLOR:black}
|
||
|
||
# 水印透明度,0.0-1.0
|
||
# 可以通过环境变量 WATERMARK_ALPHA 覆盖
|
||
watermark.alpha = ${WATERMARK_ALPHA:0.2}
|
||
|
||
# 水印宽度
|
||
# 可以通过环境变量 WATERMARK_WIDTH 覆盖
|
||
watermark.width = ${WATERMARK_WIDTH:180}
|
||
|
||
# 水印高度
|
||
# 可以通过环境变量 WATERMARK_HEIGHT 覆盖
|
||
watermark.height = ${WATERMARK_HEIGHT:80}
|
||
|
||
# 水印旋转角度
|
||
# 可以通过环境变量 WATERMARK_ANGLE 覆盖
|
||
watermark.angle = ${WATERMARK_ANGLE:10}
|
||
|
||
|
||
###############################################################################
|
||
# 十、FTP文件访问配置(支持动态配置)
|
||
###############################################################################
|
||
|
||
# FTP模块设置
|
||
# 预览源为FTP时,可在ftp url后面加参数?ftp.username=ftpuser&ftp.password=123456&ftp.control.encoding=GBK,指定,不指定默认用配置的 (为了安全我们强烈建议在配置中设置相关信息)
|
||
# ftp.control.encodin (根据FTP服务器操作系统选择,Linux一般为UTF-8,Windows一般为GBK)
|
||
# 使用方法,支持,分割第一个是域名或者IP地址后面是用户名在后面是密码,在后面是编码(用户名密码和编码用:分割, 域名用,分割),切记url不需要任何协议头
|
||
# ftp.username = 地址:端口:用户名:密码:编码,192.168.0.2:21:name:123456:UTF-8,www.xxx.com:21:admin:pass:UTF-8 多客户端,分割
|
||
# ftp.username =10.99.1.2:21:666:88888:GBK
|
||
ftp.username = false
|
||
|
||
|
||
###############################################################################
|
||
# 十一、首页与文件管理配置(支持动态配置)
|
||
###############################################################################
|
||
|
||
# 是否禁用首页文件上传功能,默认为true(禁用)
|
||
# 设置为true可关闭上传功能,仅用于预览
|
||
file.upload.disable = true
|
||
|
||
# 网站备案信息,显示在首页底部,默认为空
|
||
beian = ${KK_BEIAN:default}
|
||
|
||
# 首页初始化加载的页码,默认为1(第一页)
|
||
home.pagenumber = ${DEFAULT_HOME_PAGENUMBER:1}
|
||
|
||
# 首页每页显示的文件数量,默认为20
|
||
home.pagesize = ${DEFAULT_HOME_PAGSIZE:20}
|
||
|
||
# 文件删除验证配置
|
||
# 是否启用验证码验证删除文件,默认为false(不启用)
|
||
# 启用后删除文件需要输入验证码,防止误删
|
||
delete.captcha = ${KK_DELETE_CAPTCHA:false}
|
||
|
||
# 删除文件密码,默认为123456
|
||
delete.password = ${KK_DELETE_PASSWORD:123456}
|
||
|
||
# 是否删除转换后的源文件,默认为true(删除)
|
||
# 启用可节约磁盘空间,但会丢失原始文件
|
||
delete.source.file = ${KK_DELETE_SOURCE_FILE:true}
|
||
|
||
|
||
###############################################################################
|
||
# 十二、权限与认证配置(支持动态配置)
|
||
###############################################################################
|
||
|
||
# 是否启用图片预览权限,默认为true(启用)
|
||
# 设置为false可禁用所有图片预览功能
|
||
kk.Picturespreview = true
|
||
|
||
# 是否启用跨域文件获取权限,默认为true(启用)
|
||
kk.Getcorsfile = true
|
||
|
||
# 是否启用添加异步任务权限,默认为true(启用)
|
||
# 大文件转换通常使用异步任务处理
|
||
kk.addTask = true
|
||
|
||
# API密钥功能,默认为false(禁用)
|
||
# 启用后需要提供密钥才能调用API
|
||
kk.key = false
|
||
|
||
# AES加密密钥,必须为16位字符
|
||
# 启用AES加密时,接入方需使用相同的密钥
|
||
# 用于敏感数据传输加密
|
||
aes.key = 1234567890123456
|
||
|
||
# Basic认证配置,格式:域名:用户名:密码,多个用逗号分隔
|
||
# 用于保护特定域名的访问
|
||
# 示例:192.168.0.1:admin:pass123,example.com:user:pass456
|
||
basic.name = false
|
||
|
||
# User-Agent验证字符串,默认不启用
|
||
# 可用于简单的客户端验证
|
||
useragent = false
|
||
|
||
|
||
###############################################################################
|
||
# 十三、高级功能与兼容性配置(支持动态配置)
|
||
###############################################################################
|
||
|
||
# 异步配置刷新定时时间(秒)
|
||
kk.refreshschedule = 2
|
||
|
||
# 首页是否显示AES密钥 默认为false(禁用)
|
||
kk.isshowaeskey = false
|
||
|
||
# 是否允许XLSX编辑
|
||
kk.xlsxallowedit = false
|
||
|
||
# 是否显示XLSX工具栏
|
||
kk.xlsxshowtoolbar = false
|
||
|
||
# 首页是否显示key密钥 默认为false(禁用)
|
||
kk.isshowkey = false
|
||
|
||
# 预览html文件 是否启用JavaScript 默认为true(启用)
|
||
kk.scriptjs = true
|
||
|
||
|
||
###############################################################################
|
||
# 十四、文件类型分类配置(支持动态配置)
|
||
###############################################################################
|
||
|
||
# 纯文本文件类型,直接显示
|
||
simText = ${KK_SIMTEXT:txt,html,htm,asp,jsp,xml,json,properties,md,gitignore,log,java,py,c,cpp,sql,sh,bat,m,bas,prg,cmd}
|