企业文件管理常陷入付费昂贵与开源难用的两难。Free-FS 作为一个新兴的开源项目,基于 Spring Boot 3.5 等主流技术栈,提供了大文件分片上传、多云存储插件化、在线预览等完整功能,为需要自建企业网盘或文件服务的团队提供了一个高性价比、高可扩展性的新选择。
智能速览
基于 Spring Boot 3.5 + MyBatis Flex + Sa-Token 构建后端,技术栈现代主流。
支持大文件分片上传、断点续传和秒传,并通过 SSE 推送实时进度。
采用 SPI 插件化设计存储层,兼容本地、阿里云 OSS、七牛云等多种存储后端。
集成 LibreOffice 实现多格式文件在线预览,包含 Office 文档、图片和代码等。
使用 Sa-Token 实现精细化的权限控制,支持文件分享与回收站机制。
精华内容
Free-FS 的核心价值在于其全面的功能覆盖与灵活的架构设计,旨在应对企业级场景下的真实挑战。
大文件处理
前端将大文件切片并行上传,后端利用 SSE (Server-Sent Events) 技术向前端实时推送进度,精度可达单个分片的状态。当网络中断后,系统会精确记录断点位置,恢复传输时从断点继续,避免重复上传。其秒传功能则通过计算文件 MD5 值实现,服务器若发现已有相同哈希的文件,便直接建立引用,省去了实际的数据传输过程,极大提升了上传效率。
存储架构
Free-FS 的存储层采用 SPI (Service Provider Interface) 插件化设计,将存储能力抽象成统一接口,实现了核心业务与存储实现的解耦。系统内置了本地存储、阿里云 OSS、七牛云 Kodo、AWS S3 兼容存储及 RustFS 等多种实现。这意味着,用户可以在一套系统中管理多个存储平台,并按需进行分配或一键切换。若要新增存储平台,开发者仅需实现核心接口并注册为 SPI 服务,无需修改主业务逻辑代码,扩展性极强。
在线预览
系统支持五大类文件的在线预览,覆盖了常见的使用场景。对于 Office 文档,系统通过集成 LibreOffice 将其转换为 PDF,再交由前端渲染。为保证转换效率,转换服务采用进程池模式,允许配置并发转换数与任务超时时间,从而在高并发场景下依然能提供稳定的预览服务。此外,系统也原生支持图片、视频、音频、文本和代码等格式的直接预览。
权限与安全
在权限控制方面,项目集成了 Sa-Token 框架,通过 JWT 实现无状态会话,天然支持分布式部署。权限粒度可以控制到单个文件的查看、下载、编辑、删除等具体操作。文件分享功能提供了公开链接和授权码两种模式,授权码分享可额外设置有效期和访问次数,增加了安全性。同时,回收站机制为误删操作提供了缓冲,支持批量还原和永久删除。
技术选型
后端采用 Spring Boot 3.5.4,ORM 层选用 MyBatis Flex。作为 MyBatis 的增强版,它在性能和易用性上提供了更优的选择。认证授权方面,项目选择了 Sa-Token 而非传统的 Spring Security,主要原因是其 API 设计更为简洁轻量,能够快速集成并满足多数认证场景需求。数据库支持 MySQL 8.0+ 与 PostgreSQL 14+,并搭配 HikariCP 连接池、Caffeine 本地缓存和 Redis 分布式缓存。
总体来看,Free-FS 在功能完整性和架构扩展性上表现突出,为企业自建文件系统提供了一个务实且强大的基础。它在解决大文件上传和多云存储等痛点上给出了可行的方案。对于正在寻求一个可深度定制、易于集成的文件管理后端的开发团队而言,Free-FS 无疑是一个值得深入评估的开源选择。