乐于分享
好东西不私藏

又一款国产开源企业级文件管理系统诞生了!基于 Spring Boot 3.5.x + Sa-Token + MyBatis Flex

又一款国产开源企业级文件管理系统诞生了!基于 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 前端。

这里给不懂的朋友简单解释下上面提到的几个关键术语:

术语
含义
分片上传
把大文件切成多个小块分别上传,网络中断后只需上传未完成的分片
断点续传
记录上传进度,中断后从断点继续,不用重新上传整个文件
秒传
通过计算文件哈希值(如 MD5、SHA-256),如果服务器已有相同哈希的文件,直接建立引用而不上传实际数据

它解决了什么问题?

企业文件管理常见的几个麻烦:

  • 大文件上传困难:没有分片上传、断点续传,网络一中断就得重新开始
  • 存储平台绑定:绑死单一云存储,切换成本高,迁移困难
  • 预览能力弱:只支持少数格式,Office/图片/PDF 预览要额外配置
  • 权限管理粗糙:缺少细粒度权限控制,无法满足企业安全要求
  • 部署复杂:依赖多、配置繁琐,开箱即用困难

Free-FS 用主流技术栈做了一个功能完整、架构清晰、可扩展的文件管理后端。

核心功能

文件管理

支持列表和网格两种视图。

列表视图
网格视图

大文件上传与秒传

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

传输配置

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

传输列表

多云存储插件化

存储层用 SPI 插件化设计,把存储能力抽象成统一接口。

内置的存储实现有本地存储、阿里云 OSS、七牛云 Kodo、AWS S3 兼容存储、RustFS。

一套系统可以管理多个存储平台,按需分配或一键切换。新增存储平台只要实现核心接口并注册,不用改主业务代码。

存储配置
添加存储配置

在线预览

支持五大类文件预览:

类型
支持格式
图片
jpg/png/gif/webp/svg 等
Office 文档
doc/docx/xls/xlsx/ppt/pptx(需要 LibreOffice)
文本代码
30+ 种编程语言语法高亮
音视频
流式播放
压缩包
查看目录结构

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 定义接口,各存储实现添加新插件模块就行。

与其他方案对比

对比维度
Free-FS
MinIO
Nextcloud
Seafile
技术栈
Spring Boot 3.x
Go
PHP
Go/C
定位
后端服务
对象存储
完整网盘
完整网盘
大文件上传
分片/断点续传/秒传
需自行实现
支持
支持
在线预览
多格式支持
需自行实现
支持
支持
多云存储
插件化切换
单一
支持
支持
权限管理
Sa-Token 细粒度
简单
细粒度
细粒度
部署难度
中(需数据库)
开源协议
Apache 2.0
AGPL v3
AGPL v3
GPL-3.0

只做对象存储的话 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

⭐️推荐阅读:

本站文章均为手工撰写未经允许谢绝转载:夜雨聆风 » 又一款国产开源企业级文件管理系统诞生了!基于 Spring Boot 3.5.x + Sa-Token + MyBatis Flex

评论 抢沙发

1 + 3 =
  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
×
订阅图标按钮