From b5e593ea3c4d7616e47d26bfdc810a776a15c9ae Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=97=92=E5=93=92=E8=A5=BF?= Date: Tue, 8 Jul 2025 03:10:56 +0000 Subject: [PATCH] update README.md. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: 嗒哒西 --- README.md | 99 +++++++++++++++++++++++++++++++++++++------------------ 1 file changed, 67 insertions(+), 32 deletions(-) diff --git a/README.md b/README.md index 1c8b358..5aa2e5e 100644 --- a/README.md +++ b/README.md @@ -1,32 +1,67 @@ -# 文件服务 - -## 技术栈 - -- SpringBoot -- SpringCloud -- MongoDB -- JDK8 -- SpringData MongoDB - -## 功能描述 -- 单文件上传 -- 批量上传 -- 文件预览 仅支持,浏览器预览支持的文件格式 -- 文件下载 -- 文件删除 -- 文件重命名 -- 批量删除 -- 获取文件内容 -- 分片上传 -- 断点续传上传 -- 断点续传下载 - -## MongoDB GridFS 简介 -- GridFS是用于存储和检索超过16 MB BSON文档大小限制的文件 -- GridFS 会将大文件对象分割成多个小的chunk(文件片段),一般为256k/个,每个chunk将作为MongoDB的一个文档(document)被存储在chunks集合中。 - -## 何时使用GridFS -- 如果文件系统限制了目录中文件的数量,则可以使用GridFS来存储所需数量的文件。 -- 当您要访问大文件部分的信息而不必将整个文件加载到内存中时,可以使用GridFS来调用文件的某些部分,而无需将整个文件读入内存。 -- 当您想要使文件和元数据自动同步并在多个系统和设施中部署时,可以使用GridFS。使用地理上分散的副本集时,MongoDB可以自动将文件及其元数据分发到许多 mongod实例和设施。 -- 如果文件都小于16 MB的限制,请考虑将每个文件存储在单个文档中,而不要使用GridFS。您可以使用BinData数据类型存储二进制数据。 +# 📁 文件服务系统 + +基于 **Spring Boot** 与 **MongoDB GridFS** 构建的高性能分布式文件存储服务,支持多种文件操作能力,包括**大文件分片上传、断点续传、在线预览、批量管理等功能**,可广泛应用于内容管理系统(CMS)、中台存储模块、或微服务文件网关等场景。 + +--- + +## 🚀 技术架构 + +- **Spring Boot**:轻量级 Java 微服务框架 +- **Spring Cloud**:分布式服务基础框架 +- **Spring Data MongoDB**:MongoDB 数据访问与操作封装 +- **MongoDB**:NoSQL 数据库,使用 GridFS 实现大文件存储 +- **JDK 1.8**:运行环境基础 + +--- + +## ✨ 功能特性 + +- ✅ 单文件上传 +- ✅ 批量文件上传 +- ✅ 在线文件预览(支持浏览器可预览的格式) +- ✅ 文件下载 +- ✅ 文件删除 +- ✅ 文件重命名 +- ✅ 批量删除 +- ✅ 获取文件元数据与内容 +- ✅ **大文件分片上传** +- ✅ **断点续传上传** +- ✅ **断点续传下载** + +--- + +## 🧠 什么是 GridFS(MongoDB 文件系统) + +**GridFS** 是 MongoDB 提供的一种专用于存储超大文件(>16MB)的文件存储方案,它将文件拆分成多个小的 **chunk(片段)** 存储,每个 chunk 默认大小为 **256KB**,分别保存在两个集合中: + +- `fs.files`:存储文件元信息(如名称、大小、MD5、上传时间等) +- `fs.chunks`:存储文件内容分片(按顺序编号) + +--- + +## 📌 适用场景(GridFS 的优势) + +GridFS 非常适合以下使用场景: + +- 📂 **传统文件系统限制文件数量或目录深度** + GridFS 可规避操作系统层面对文件系统的限制。 + +- 🧩 **按需读取大文件的部分内容** + 无需一次性加载整个文件到内存,可节省资源,提升处理效率。 + +- 🌐 **多节点部署与自动数据同步** + GridFS 利用 MongoDB 副本集特性,可将文件和元数据自动分布与同步至多个数据中心,提升容灾与可用性。 + +- 🧷 **需要元数据和文件一体化管理** + GridFS 支持以文档形式管理文件的元信息,便于查询与权限控制。 + +> ⚠️ 如果文件均小于 16MB,可优先考虑使用 MongoDB 的 `BinData` 类型直接存储,避免不必要的分片存储与索引开销。 + +--- + +## 🧰 示例应用场景 + +- 企业内部文档中心 / 附件上传模块 +- 媒体管理平台的大文件(音频/视频)上传 +- 云盘系统或内容分发存储网关 +- 后台中台系统的统一文件服务 -- Gitee