# gridfs-file-server **Repository Path**: tadashio/gridfs-file-server ## Basic Information - **Project Name**: gridfs-file-server - **Description**: 🔥🔥🔥Java 实现的基于 MongoDB GridFS 的分布式文件存储服务 - **Primary Language**: Java - **License**: Apache-2.0 - **Default Branch**: develop - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 4 - **Forks**: 0 - **Created**: 2022-04-11 - **Last Updated**: 2025-07-08 ## Categories & Tags **Categories**: Uncategorized **Tags**: Java, MongoDB, SpringCloud ## README # 📁 文件服务系统 基于 **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` 类型直接存储,避免不必要的分片存储与索引开销。 --- ## 🧰 示例应用场景 - 企业内部文档中心 / 附件上传模块 - 媒体管理平台的大文件(音频/视频)上传 - 云盘系统或内容分发存储网关 - 后台中台系统的统一文件服务