Tim's Blog

Tim's Blog

【LSky Pro 改造】扩展上传格式小记录

2025-08-01
【LSky Pro 改造】扩展上传格式小记录

最近尝试使用 LSky Pro 图床,觉得还不错,不过嘛——为了满足自己的需求,我还是忍不住想捣鼓一番 🤏

这篇文章是我在不开启压缩、审核、水印等功能的前提下,把LSky Pro用于存放 非图片格式(视频、文档等) 文件的一点折腾记录

📝环境说明

通过1Panel 面板部署,镜像是:halcyonazure/lsky-pro-docker:latest

📤拓展想法

默认LSky Pro只支持常见图片格式,比如 JPEG、PNG 等,连 SVG 都不支持!但我希望它还能上传一些小视频、文档啥的(方便管理和调用),于是就开始动手扩展支持格式。
doc_lsky1.webp

🛠️解决过程

1. 前端新增上传格式

默认情况下,LSky Pro只允许图片上传:
doc_lsky1.webp
所以需要修改前端配置文件 config/convention.php ,追加需要上传的格式。
原始的配置:

GroupConfigKey::AcceptedFileSuffixes => ['jpeg', 'jpg', 'png', 'gif', 'tif', 'bmp', 'ico', 'psd', 'webp']

追加新格式:

//这里添加了一个svg格式和一些视频格式
GroupConfigKey::AcceptedFileSuffixes =>  ['mp4','mov','avi','mkv','webm','svg','jpeg',  'jpg',  'png',  'gif',  'tif',  'bmp',  'ico',  'psd',  'webp'],

doc_lsky1.webp

2. 后端新增匹配格式

前端能勾选新格式还不够,后端也需要处理一下格式校验,否则无法保存角色组配置
doc_lsky1.webp
这时候就需要修改这个文件:app/Http/Requests/Admin/GroupRequest.php
原始内容:

'configs.accepted_file_suffixes'  =>  'required|array|in:jpeg,jpg,png,gif,tif,bmp,ico,psd,webp',

追加前面新增的格式:

'configs.accepted_file_suffixes'  =>  'required|array|in:mp4,mov,avi,mkv,webm,svg,jpeg,jpg,png,gif,tif,bmp,ico,psd,webp',

这样,后端也认这些格式了,角色组配置可以保存了。

3. 缩略图预览

LSky Pro的网页端上传会尝试生成缩略图来预览文件,但对于视频、psd 这些格式,它显然预览不了,结果就直接报错了 :
doc_lsky1.webp

所以需要在 resources/views/components/upload.blade.php 里追加排除预览的格式。
原始排除配置:

let excludes =  ['psd', 'tif','mp4'];  // 排除支持预览的格式

追加排除格式:

//这里只要添加视频格式,svg能生成预览,就不用添加了
let excludes =  ['mp4','mov','avi','mkv','webm','psd',  'tif'];  // 排除支持预览的格式

这样前端就不会尝试给这些格式生成预览缩略图,也就不会报错了。
doc_lsky1.webp

🔚小结

  • 视频、SVG 等非图片格式现在都可以上传了
  • 不会再在后台网页中报错
  • 当然,这些格式在后台网页中看不到缩略图预览(正常现象)
  • ⚠️ 本文记录的是只开启上传功能的LSky Pro改动方式,如果你开启了其他功能(压缩 / 水印 / 审核等),可能还需要额外处理。