# 网盘软件 **Repository Path**: bingbingyihao/cloud-storage-software ## Basic Information - **Project Name**: 网盘软件 - **Description**: 采用SpringBoot+vue实现网盘软件,主要包含:文件上传、下载、在线预览、大文件分片上传、断点续传、断点续下载等功能;进阶功能还包含身份认证、文件权限管理、文件标签、文件搜索(按文件名、文件类型、文件大小、修改时间、标签、文件内容等)、文件分享、文件版本管理、文件评论等进阶功能 - **Primary Language**: Java - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-04-30 - **Last Updated**: 2026-05-01 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 云盘系统 (Cloud Storage System) 一个基于 Spring Boot + Vue 3 的现代化网盘系统,支持文件管理、分片上传、在线预览、分享协作等核心功能。 ![Vue](https://img.shields.io/badge/Vue-3.x-4FC08D?logo=vue.js) ![Spring Boot](https://img.shields.io/badge/Spring_Boot-2.x-6DB33F?logo=spring-boot) ![License](https://img.shields.io/badge/License-MIT-blue.svg) ## 📖 项目简介 本项目是一个功能完善的网盘系统 MVP 产品,采用前后端分离架构,实现了文件存储管理的核心功能,并支持大文件分片上传、断点续传、秒传、在线预览、文件分享、标签管理、评论系统等进阶特性。 ## ✨ 核心功能 ### 🗂️ 文件管理 - ✅ 文件/文件夹的创建、重命名、删除 - ✅ 文件夹层级导航(面包屑导航) - ✅ 文件拖拽上传 - ✅ 批量操作(批量下载、批量删除、批量移动) - ✅ 右键菜单快捷操作 - ✅ 列表视图/网格视图切换 - ✅ 多维度排序(名称、大小、时间、类型) - ✅ 文件搜索(按文件名) ### ⬆️ 上传下载 - ✅ 大文件分片上传 - ✅ 断点续传 - ✅ 文件秒传(基于MD5去重) - ✅ 分片下载/断点续下载 - ✅ 上传/下载进度实时监控 - ✅ 上传/下载任务管理面板 ### 👁️ 在线预览 - ✅ 图片预览(JPG/PNG/GIF/BMP/SVG/WebP) - ✅ 视频播放(MP4/WebM) - ✅ 音频播放(MP3/WAV/OGG) - ✅ 文本文件查看(TXT/MD/JSON/XML/CSV/LOG) - ✅ PDF文件预览 ### ⭐ 文件收藏 - ✅ 文件收藏/取消收藏 - ✅ 收藏夹独立页面 - ✅ 收藏文件列表/网格视图 - ✅ 收藏文件排序和下载 ### 🕒 最近访问 - ✅ 自动记录文件访问历史 - ✅ 最近访问独立页面 - ✅ 快速导航到文件位置 - ✅ 清空/移除访问记录 ### 🏷️ 标签系统 - ✅ 自定义标签创建 - ✅ 文件标签关联 - ✅ 按标签筛选文件 - ✅ 标签颜色自定义 ### 💬 评论系统 - ✅ 文件评论功能 - ✅ 评论列表展示 - ✅ 实时评论交互 ### 🔗 文件分享 - ✅ 生成分享链接 - ✅ 提取码保护 - ✅ 分享有效期设置(7天/30天/永久) - ✅ 分享统计(浏览次数/下载次数) - ✅ 分享链接访问和验证 ### 🗑️ 回收站 - ✅ 文件软删除到回收站 - ✅ 回收站文件恢复 - ✅ 永久删除文件 - ✅ 清空回收站 ### 🔐 用户系统 - ✅ 用户注册/登录 - ✅ Session身份认证 - ✅ 存储空间管理 - ✅ 存储空间使用统计 ## 🛠️ 技术栈 ### 后端技术 - **Spring Boot 2.x** - 后端框架 - **MyBatis-Plus** - ORM框架 - **MySQL** - 关系型数据库 - **Hutool** - Java工具类库 - **Lombok** - 代码简化 ### 前端技术 - **Vue 3** - 前端框架 - **Vue Router** - 路由管理 - **Axios** - HTTP客户端 - **Composition API** - 组件逻辑组织 ## 📁 项目结构 ``` cloud-storage-software/ ├── code/ │ ├── User_SpringBoot/ # 后端项目 │ │ ├── src/main/java/com/boot/ │ │ │ ├── MainApplication.java # 启动类 │ │ │ ├── config/ # 配置类 │ │ │ │ ├── CorsConfig.java # 跨域配置 │ │ │ │ ├── MyMetaObjectHandler.java # MyBatis字段自动填充 │ │ │ │ └── SecurityConfig.java # 安全配置 │ │ │ ├── controller/ # 控制器层 │ │ │ │ ├── FileController.java # 文件接口 │ │ │ │ ├── UserController.java # 用户接口 │ │ │ │ ├── TagController.java # 标签接口 │ │ │ │ └── CommentController.java # 评论接口 │ │ │ ├── entity/ # 实体类 │ │ │ │ ├── File.java # 文件实体 │ │ │ │ ├── User.java # 用户实体 │ │ │ │ ├── FileTag.java # 标签实体 │ │ │ │ ├── FileComment.java # 评论实体 │ │ │ │ ├── FileShare.java # 分享实体 │ │ │ │ └── FileChunk.java # 分片实体 │ │ │ ├── mapper/ # 数据访问层 │ │ │ ├── service/ # 业务逻辑层 │ │ │ │ ├── FileService.java │ │ │ │ ├── UserService.java │ │ │ │ ├── StorageService.java # 存储服务 │ │ │ │ └── EmailService.java # 邮件服务 │ │ │ └── utils/ # 工具类 │ │ │ └── Result.java # 统一返回结果 │ │ └── src/main/resources/ │ │ └── application.properties # 配置文件 │ │ │ └── user/ # 前端项目 │ ├── src/ │ │ ├── views/ # 页面组件 │ │ │ ├── Home.vue # 主页(文件管理) │ │ │ ├── Login.vue # 登录页 │ │ │ ├── Register.vue # 注册页 │ │ │ ├── RecycleBin.vue # 回收站 │ │ │ ├── Share.vue # 分享页 │ │ │ ├── Recent.vue # 最近访问 │ │ │ ├── Starred.vue # 收藏夹 │ │ │ └── Error.vue # 错误页 │ │ ├── components/ # 公共组件 │ │ │ ├── FilePreview.vue # 文件预览 │ │ │ ├── UploadManager.vue # 上传管理 │ │ │ ├── DownloadManager.vue # 下载管理 │ │ │ ├── ShareDialog.vue # 分享弹窗 │ │ │ ├── TagDialog.vue # 标签弹窗 │ │ │ ├── CommentPanel.vue # 评论面板 │ │ │ └── Message.vue # 消息提示 │ │ ├── utils/ # 工具函数 │ │ │ ├── request.js # Axios封装 │ │ │ ├── chunkUpload.js # 分片上传/下载 │ │ │ └── message.js # 消息工具 │ │ ├── router/ # 路由配置 │ │ └── App.vue # 根组件 │ ├── package.json │ └── vue.config.js │ └── db/ └── test.sql # 数据库初始化脚本 ``` ## 🚀 快速开始 ### 环境要求 - **JDK**: 1.8+ - **Node.js**: 14.x+ - **MySQL**: 5.7+ 或 8.0+ - **Maven**: 3.6+ ### 数据库配置 1. 创建数据库并导入初始化脚本: ```bash mysql -u root -p CREATE DATABASE cloud_storage DEFAULT CHARACTER SET utf8mb4; USE cloud_storage; source db/test.sql; ``` 2. 修改后端配置文件 `application.properties`: ```properties # 数据库配置 spring.datasource.url=jdbc:mysql://localhost:3306/cloud_storage?useUnicode=true&characterEncoding=utf8&serverTimezone=Asia/Shanghai spring.datasource.username=root spring.datasource.password=your_password ``` ### 后端启动 ```bash cd code/User_SpringBoot mvn clean install mvn spring-boot:run ``` 后端服务默认运行在: `http://localhost:8080` ### 前端启动 ```bash cd code/user npm install npm run serve ``` 前端服务默认运行在: `http://localhost:8081` ### 访问系统 打开浏览器访问: `http://localhost:8081` ## 📸 功能截图 > TODO: 添加系统截图 ## 🔧 配置说明 ### 后端配置 | 配置项 | 说明 | 默认值 | |--------|------|--------| | server.port | 后端服务端口 | 8080 | | spring.datasource.url | 数据库连接URL | - | | file.storage.path | 文件存储路径 | 用户目录 | | spring.servlet.multipart.max-file-size | 最大文件上传大小 | 10GB | ### 前端配置 | 配置项 | 说明 | 默认值 | |--------|------|--------| | VUE_APP_API_BASE_URL | 后端API地址 | http://localhost:8080 | | CHUNK_SIZE | 分片大小 | 5MB | ## 🎯 已实现功能清单 ### 基础功能 - [x] 用户注册/登录 - [x] 文件上传/下载 - [x] 文件夹管理 - [x] 文件重命名 - [x] 文件删除(回收站) - [x] 文件拖拽上传 ### 进阶功能 - [x] 大文件分片上传 - [x] 断点续传 - [x] 文件秒传 - [x] 在线预览 - [x] 文件分享 - [x] 标签系统 - [x] 评论系统 - [x] 文件收藏 - [x] 最近访问 - [x] 批量操作 - [x] 文件搜索 - [x] 视图切换(列表/网格) ### 规划中功能 - [ ] 文件夹压缩下载 - [ ] 文件版本管理 - [ ] 文本在线编辑 - [ ] 图片批量预览/幻灯片 - [ ] 二维码分享 - [ ] 回收站自动清理 - [ ] 存储空间分析 - [ ] 虚拟滚动优化 - [ ] 快捷键支持 - [ ] 移动端适配 - [ ] 全文搜索 - [ ] 协同编辑 ## 📝 API文档 ### 文件接口 | 接口 | 方法 | 说明 | |------|------|------| | `/api/files/upload` | POST | 上传文件 | | `/api/files/list` | GET | 获取文件列表 | | `/api/files/folder` | POST | 创建文件夹 | | `/api/files/rename` | PUT | 重命名文件 | | `/api/files/delete` | DELETE | 删除文件 | | `/api/files/download` | GET | 下载文件 | | `/api/files/storage` | GET | 获取存储信息 | | `/api/files/search` | GET | 搜索文件 | | `/api/files/star` | PUT | 收藏/取消收藏 | | `/api/files/starred/list` | GET | 获取收藏列表 | ### 分片上传接口 | 接口 | 方法 | 说明 | |------|------|------| | `/api/files/chunk/upload` | POST | 上传分片 | | `/api/files/chunk/check` | GET | 检查分片状态 | | `/api/files/chunk/merge` | POST | 合并分片 | | `/api/files/quick-upload/check` | GET | 检查秒传 | | `/api/files/quick-upload` | POST | 执行秒传 | ### 分享接口 | 接口 | 方法 | 说明 | |------|------|------| | `/api/files/share/create` | POST | 创建分享 | | `/api/files/share/list` | GET | 获取分享列表 | | `/api/files/share/cancel` | POST | 取消分享 | | `/api/files/share/info` | GET | 获取分享信息 | | `/api/files/share/verify` | POST | 验证提取码 | ### 标签接口 | 接口 | 方法 | 说明 | |------|------|------| | `/api/tags/create` | POST | 创建标签 | | `/api/tags/list` | GET | 获取标签列表 | | `/api/tags/file-tags` | GET | 获取文件标签 | | `/api/tags/relation` | POST | 关联文件标签 | ### 评论接口 | 接口 | 方法 | 说明 | |------|------|------| | `/api/comments/add` | POST | 添加评论 | | `/api/comments/list` | GET | 获取评论列表 | | `/api/comments/delete` | DELETE | 删除评论 | ### 回收站接口 | 接口 | 方法 | 说明 | |------|------|------| | `/api/files/recycle/list` | GET | 获取回收站列表 | | `/api/files/recycle/restore` | PUT | 恢复文件 | | `/api/files/recycle/delete` | DELETE | 永久删除 | | `/api/files/recycle/clear` | DELETE | 清空回收站 | ## 🤝 贡献指南 欢迎提交 Issue 和 Pull Request! 1. Fork 本仓库 2. 创建特性分支 (`git checkout -b feature/AmazingFeature`) 3. 提交更改 (`git commit -m 'Add some AmazingFeature'`) 4. 推送到分支 (`git push origin feature/AmazingFeature`) 5. 提交 Pull Request ## 📄 开源协议 本项目采用 Apache 协议 - 查看 [LICENSE](LICENSE) 文件 ## 📧 联系方式 如有问题或建议,欢迎联系! ## 🙏 致谢 感谢以下开源项目: - [Spring Boot](https://spring.io/projects/spring-boot) - [Vue.js](https://vuejs.org/) - [MyBatis-Plus](https://baomidou.com/) - [Axios](https://axios-http.com/) --- ⭐ 如果这个项目对你有帮助,请给个 Star 支持一下!