找回密码
 立即注册
首页 业界区 业界 又一款国产开源企业级文件管理系统诞生了 ...

又一款国产开源企业级文件管理系统诞生了

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

Free-FS 是什么?

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

这里给不懂的朋友简单解释下上面提到的几个关键术语:
术语 含义
分片上传把大文件切成多个小块分别上传,网络中断后只需上传未完成的分片
断点续传记录上传进度,中断后从断点继续,不用重新上传整个文件
秒传通过计算文件哈希值(如 MD5、SHA-256),如果服务器已有相同哈希的文件,直接建立引用而不上传实际数据
它解决了什么问题?

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

  • 大文件上传困难:没有分片上传、断点续传,网络一中断就得重新开始
  • 存储平台绑定:绑死单一云存储,切换成本高,迁移困难
  • 预览能力弱:只支持少数格式,Office/图片/PDF 预览要额外配置
  • 权限管理粗糙:缺少细粒度权限控制,无法满足企业安全要求
  • 部署复杂:依赖多、配置繁琐,开箱即用困难
Free-FS 用主流技术栈做了一个功能完整、架构清晰、可扩展的文件管理后端。
核心功能

文件管理

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

4.webp

大文件上传与秒传

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

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

多云存储插件化

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

8.webp

添加存储配置
在线预览

支持五大类文件预览:
类型 支持格式
图片jpg/png/gif/webp/svg 等
Office 文档doc/docx/xls/xlsx/ppt/pptx(需要 LibreOffice)
文本代码30+ 种编程语言语法高亮
音视频流式播放
压缩包查看目录结构
Office 文档通过 LibreOffice 转成 PDF 后交给前端,转换用进程池模式,可以配置并发度和超时。
权限与安全

用 Sa-Token 做权限认证,JWT 无状态会话,支持分布式部署。
权限可以控制到文件的查看、下载、编辑、删除等操作。
文件分享和回收站

文件分享有公开链接和授权码两种模式,授权码分享能设置有效期和访问次数。
9.webp

10.webp

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

回收站
安装与快速上手

环境要求


  • JDK 17+
  • Maven 3.8+
  • MySQL 8.0+ 或 PostgreSQL 14+(二选一)
  • Redis
  • LibreOffice (可选,用于 Office 文档预览功能)
安装步骤
  1. git clone https://gitee.com/dromara/free-fs.git cd free-fs mvn clean install -DskipTests
复制代码
数据库初始化

MySQL:
  1. CREATE DATABASE `free-fs` CHARACTER SET 'utf8mb4' COLLATE 'utf8mb4_general_ci';
复制代码
PostgreSQL:
  1. 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 配置:
  1. cd fs-admin mvn 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 面试题总结,大家感受一下(点此链接了解: 星球):
12.webp

技术架构

技术栈选型

后端用 Spring Boot 3.5.4,搭配 MyBatis Flex 做 ORM 层。
MyBatis Flex 是 MyBatis 的增强版,和 MyBatis-Plus 有些差异:
13.webp

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

多模块 Maven 结构:
14.webp

存储插件用 SPI 设计,storage-plugin-core 定义接口,各存储实现添加新插件模块就行。
与其他方案对比

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

  • Java 面试 & 后端通用面试指南
  • 《SpringAI 智能面试平台+RAG 知识库》
  • Java 学习路线(最新版,4w+字)
  • 后端面试 PDF 最新版

来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

相关推荐

您需要登录后才可以回帖 登录 | 立即注册