又一款国产开源企业级文件管理系统诞生了!基于 Spring Boot 3.5.x + Sa-Token + MyBatis Flex
大家好,我是 Guide。
前几天在技术群里看到大家讨论企业网盘选型。付费的太贵,开源的功能不够完整,部署维护又麻烦——这些问题很多团队都遇到过。想要一个能处理大文件、支持在线预览、还能多云存储的方案,确实不容易找。
Dromara 开源社区前段时间新进了一个基于 Spring Boot 的文件管理系统 —— Free-FS,我研究了一下,功能比较完整,架构也清晰,分享给大家(JavaGuide 所有开源项目分享都无商务性质,纯分享,欢迎自荐,地址: https://github.com/CodingDocs/awesome-java)。

Free-FS 是什么?
Free-FS 是一个企业级文件管理系统后端,基于 Spring Boot 3.5 + MyBatis Flex + Sa-Token + React/Vue 构建。
主要功能包括大文件分片上传/断点续传/秒传、多格式在线预览、多云存储插件化扩展、权限控制、回收站等。有配套的 Vue 3 前端。

这里给不懂的朋友简单解释下上面提到的几个关键术语:
|
|
|
|---|---|
| 分片上传 |
|
| 断点续传 |
|
| 秒传 |
|
它解决了什么问题?
企业文件管理常见的几个麻烦:
-
大文件上传困难:没有分片上传、断点续传,网络一中断就得重新开始 -
存储平台绑定:绑死单一云存储,切换成本高,迁移困难 -
预览能力弱:只支持少数格式,Office/图片/PDF 预览要额外配置 -
权限管理粗糙:缺少细粒度权限控制,无法满足企业安全要求 -
部署复杂:依赖多、配置繁琐,开箱即用困难
Free-FS 用主流技术栈做了一个功能完整、架构清晰、可扩展的文件管理后端。
核心功能
文件管理
支持列表和网格两种视图。


大文件上传与秒传
前端把大文件切片并行上传,后端通过 SSE 实时推进度,精确到每个分片的状态。网络中断后,系统记录断点位置,续传时从断点继续。

秒传的原理是先算文件 MD5 发给服务端,服务器有相同哈希的文件就直接建立引用,跳过数据传输。所以上传几个 G 的文件有时能”秒完”。

多云存储插件化
存储层用 SPI 插件化设计,把存储能力抽象成统一接口。
内置的存储实现有本地存储、阿里云 OSS、七牛云 Kodo、AWS S3 兼容存储、RustFS。
一套系统可以管理多个存储平台,按需分配或一键切换。新增存储平台只要实现核心接口并注册,不用改主业务代码。


在线预览
支持五大类文件预览:
|
|
|
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Office 文档通过 LibreOffice 转成 PDF 后交给前端,转换用进程池模式,可以配置并发度和超时。
权限与安全
用 Sa-Token 做权限认证,JWT 无状态会话,支持分布式部署。
权限可以控制到文件的查看、下载、编辑、删除等操作。
文件分享和回收站
文件分享有公开链接和授权码两种模式,授权码分享能设置有效期和访问次数。


回收站给删除操作一个缓冲区,支持批量还原、永久删除和自动清理。

安装与快速上手
环境要求
-
JDK 17+ -
Maven 3.8+ -
MySQL 8.0+ 或 PostgreSQL 14+(二选一) -
Redis -
LibreOffice (可选,用于 Office 文档预览功能)
安装步骤
git clone https://gitee.com/dromara/free-fs.gitcd free-fsmvn clean install -DskipTests
数据库初始化
MySQL:
CREATE DATABASE `free-fs` CHARACTER SET 'utf8mb4' COLLATE 'utf8mb4_general_ci';
PostgreSQL:
CREATE DATABASE free-fs ENCODING 'UTF8' LC_COLLATE='zh_CN.UTF-8' LC_CTYPE='zh_CN.UTF-8';
数据库创建完成之后,导入项目根目录下对应的 SQL 文件到刚创建的数据库中:
-
MySQL: _sql/mysql/free-fs.sql -
PostgreSQL: _sql/postgresql/free-fs_pg.sql
配置与运行
修改 fs-admin/src/main/resources/application-dev.yml 中的数据库和 Redis 配置:
cd fs-adminmvn spring-boot:run
访问地址:
-
服务地址:http://localhost:8080 -
API 文档:http://localhost:8080/swagger-ui.html -
默认账号:admin / admin
我的星球目前正在更新 《SpringAI 智能面试平台+RAG 知识库》配套实战项目教程,涉及到 Prompt Engineering、大模型集成、RAG(检索增强生成)、高性能对象存储与向量数据库。后续的话,还会同步上 Agent 项目。
内容非常全面,非常适合想要实战 AI 项目或者准备 AI 大模型应用开发岗位面试的朋友,来一张刚写完的3.4w 字+35 道题目的 RAG 面试题总结,大家感受一下:

技术架构
技术栈选型
后端用 Spring Boot 3.5.4,搭配 MyBatis Flex 做 ORM 层。
MyBatis Flex 是 MyBatis 的增强版,和 MyBatis-Plus 有些差异:

MyBatis Flex 的详细介绍可以参考这篇文章:再见 MyBatis,这款 ORM 框架确实太优雅!!
认证授权用 Sa-Token,比 Spring Security 简洁。数据库支持 MySQL 8.0+ 和 PostgreSQL 14+,HikariCP 连接池,配合 Caffeine 本地缓存和 Redis 分布式缓存。
项目结构
多模块 Maven 结构:

存储插件用 SPI 设计,storage-plugin-core 定义接口,各存储实现添加新插件模块就行。
与其他方案对比
|
|
|
|
|
|
|---|---|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
只做对象存储的话 MinIO 更合适;需要完整网盘 UI 和协作功能的话 Nextcloud 或 Seafile 更好;需要一个可定制、易集成的文件管理后端,Free-FS 可以考虑。
总结
Free-FS 用 Spring Boot 3.x + MyBatis Flex + Sa-Token 做了一个功能完整的企业级文件管理后端。
-
优势:功能完整,开箱即用;大文件上传(分片/断点续传/秒传);插件化存储扩展;多格式在线预览;Sa-Token 权限管理;Apache 2.0 协议友好。 -
局限:需要部署数据库(MySQL/PostgreSQL + Redis);Office 预览要配置 LibreOffice。 -
适用场景:搭建企业级文件管理系统、需要多云存储支持、需要大文件上传能力。
建议先部署基础版本跑通上传下载流程,再按需要接入云存储和配置预览。
-
后端地址:https://gitee.com/dromara/free-fs
-
前端地址:https://gitee.com/xddcode/free-fs-frontend

⭐️推荐阅读:
夜雨聆风
