# LeafPan
**Repository Path**: Yangshengzhou/leaf-pan
## Basic Information
- **Project Name**: LeafPan
- **Description**: LeafPan 是一个现代化的企业级文件管理平台,基于 Vue 3 + Spring Boot 3 技术栈构建,提供安全、高效、智能的文件存储和分享解决方案。
- **Primary Language**: Unknown
- **License**: AGPL-3.0
- **Default Branch**: master
- **Homepage**: https://gitee.com/Yangshengzhou/leaf-pan
- **GVP Project**: No
## Statistics
- **Stars**: 2
- **Forks**: 0
- **Created**: 2025-10-21
- **Last Updated**: 2026-01-28
## Categories & Tags
**Categories**: Uncategorized
**Tags**: Java
## README
# 轻羽云盘 - LeafPan
[](https://github.com/YangShengzhou03/LeafPan/stargazers) [](https://github.com/YangShengzhou03/LeafPan/network/members) [](https://github.com/YangShengzhou03/LeafPan/issues) [](https://github.com/YangShengzhou03/LeafPan/blob/main/LICENSE) [](https://vuejs.org/) [](https://spring.io/projects/spring-boot)
**一个现代化的云存储系统,采用前后端分离架构**
[快速开始](#-快速开始) • [功能特性](#-功能特性) • [API文档](API_DOCUMENTATION.md)
## 项目简介
轻羽云盘(LeafPan)是一个功能全面、安全可靠的云存储系统,支持文件上传下载、在线预览、分享、移动复制等核心功能。系统采用前后端分离架构,前端使用 Vue 3 + Element Plus,后端使用 Spring Boot 3 + MySQL,提供完整的用户认证、文件管理、分享协作等功能。
**项目地址**: https://github.com/YangShengzhou03/LeafPan
## 功能特性
### 用户功能
在轻羽云盘中,用户可以轻松管理自己的文件和文件夹。支持上传文件到云端,随时下载需要的文件,还可以在线预览多种格式的文件。文件和文件夹都可以进行重命名、删除等操作,让文件管理更加便捷。
收藏功能让用户可以将重要的文件和文件夹添加到收藏夹,快速访问常用内容。分享功能允许用户创建分享链接,并可以设置访问密码和有效期,方便与他人共享文件。回收站功能提供了文件的安全保障,被删除的文件会先进入回收站,用户可以随时恢复,也可以选择永久删除。
系统还提供了存储空间管理功能,用户可以实时查看自己的存储使用情况,合理规划空间。个人设置功能让用户可以修改个人信息、密码和头像,打造个性化的使用体验。
### 管理员功能
管理员拥有更强大的系统管理权限。用户管理功能允许管理员查看所有用户列表,可以禁用或启用用户账号,还可以帮助用户重置密码。系统配置功能让管理员能够管理系统参数,确保系统运行在最佳状态。
操作日志功能记录了所有用户的操作记录,管理员可以查看这些日志,了解系统的使用情况,并支持导出日志进行分析。数据统计功能提供了用户、文件、存储等多维度的统计数据,帮助管理员全面掌握系统运行状况。
### 安全特性
安全是轻羽云盘的重要考量。系统采用 JWT 认证机制,基于 Token 进行安全认证,确保用户数据的安全。支持邮箱验证码快速登录,让登录过程更加便捷。密码重置流程经过精心设计,确保只有合法用户才能重置密码。
系统还提供了完整的操作审计功能,所有操作都会被记录下来,便于追溯和监控,为系统安全提供了有力保障。
### 系统界面预览

## 快速开始
## 环境要求
### 开发环境
开发轻羽云盘需要准备以下环境:Node.js 版本需要在 16.0 以上,用于前端开发;Java 版本需要在 17.0 以上,用于后端开发;MySQL 数据库版本需要在 8.0 以上;Maven 版本需要在 3.6 以上,用于后端项目构建。
### 生产环境
生产环境部署建议使用 Linux 或 Windows Server 服务器,内存至少需要 2GB,存储空间可以根据实际需求配置。如果需要使用对象存储服务,可以部署 MinIO。
## 安装部署
### 1. 克隆项目
首先需要克隆项目到本地:
```bash
git clone https://github.com/YangShengzhou03/LeafPan.git
cd LeafPan
```
### 2. 数据库配置
#### 创建数据库
数据库初始化可以通过执行初始化脚本完成,脚本会自动创建数据库:
```sql
-- 执行初始化脚本(脚本中会自动创建数据库)
SOURCE init.sql;
```
如果需要手动创建数据库,可以按照以下步骤操作:
```sql
-- 创建数据库
CREATE DATABASE leafpan CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
-- 执行初始化脚本
USE leafpan;
SOURCE init.sql;
```
### 3. 后端部署
#### 配置应用
后端配置文件位于 `backend/src/main/resources/application.yml`,需要根据实际情况修改配置:
```yaml
spring:
datasource:
url: jdbc:mysql://localhost:3306/leafpan?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai
username: root
password: 123456
jpa:
hibernate:
ddl-auto: update
show-sql: false
minio:
endpoint: http://localhost:9000
access-key: minioadmin
secret-key: minioadmin
bucket-name: leafpan
app:
jwt:
secret: leaf-pan-secret-key-for-jwt-token-generation
expiration: 86400000
storage:
max-file-size: 1073741824
email:
sender: your-email@example.com
password: your-email-password
smtp:
server: smtp.example.com
port: 465
```
#### 启动后端服务
配置完成后,可以启动后端服务:
```bash
cd backend
# 编译项目
mvn clean package
# 运行应用
java -jar target/backend-0.0.1-SNAPSHOT.jar
```
### 4. 前端部署
#### 安装依赖
进入前端目录,安装所需的依赖包:
```bash
cd frontend
npm install
```
#### 配置环境变量
编辑 `frontend/.env` 文件,配置后端 API 地址:
```env
VUE_APP_API_URL=http://localhost:8081/api
```
#### 启动前端服务
配置完成后,可以启动前端服务:
```bash
# 开发模式
npm run serve
# 生产构建
npm run build
```
## 快速使用
### 1. 访问系统
系统部署完成后,可以通过浏览器访问前端地址 http://localhost:8080,后端 API 地址为 http://localhost:8081/api。
### 2. 默认账号
系统提供了两个默认账号用于测试:
- **管理员账号**: admin@qq.com / 123456
- **普通用户账号**: user@qq.com / 123456

### 3. 核心功能
#### 文件管理
轻羽云盘提供了完整的文件管理功能。用户可以将文件上传到指定的文件夹,支持多种文件格式。下载功能让用户可以随时获取云端文件,在线预览功能支持多种文件格式的直接查看。文件重命名和删除功能让文件管理更加灵活,还支持批量操作文件,提高工作效率。
#### 文件夹管理
文件夹管理功能让用户可以创建多级文件夹,方便文件分类存储。移动和复制功能让用户可以轻松整理文件结构,查看文件夹路径功能让用户清楚知道当前所在位置。

#### 分享功能
分享功能让用户可以轻松与他人共享文件。创建分享链接后,可以设置访问密码,提高安全性。还可以设置分享链接的有效期,过期后链接自动失效。系统还提供了分享记录查看功能,让用户了解自己的分享历史。
#### 收藏功能
收藏功能让用户可以将重要的文件和文件夹添加到收藏夹,快速访问常用内容,提高工作效率。
#### 回收站
回收站功能为文件删除提供了安全保障。被删除的文件会先进入回收站,用户可以随时查看已删除的文件。恢复功能可以将文件恢复到原来的位置,永久删除功能可以彻底删除不需要的文件,清空回收站功能可以一键删除所有回收站中的文件。
## 系统架构
轻羽云盘采用经典的三层架构设计:
```
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
│ 前端界面层 │ │ 后端服务层 │ │ 数据存储层 │
│ │ │ │ │ │
│ Vue 3 + │◄──►│ Spring Boot 3 │◄──►│ MySQL 8.0 │
│ Element Plus │ │ Spring Security │ │ │
│ │ │ JPA + JWT │ │ │
└─────────────────┘ └─────────────────┘ └─────────────────┘
│ │ │
│ │ │
▼ ▼ ▼
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
│ 用户交互层 │ │ 业务逻辑层 │ │ 数据持久层 │
│ │ │ │ │ │
│ 组件化开发 │ │ Service层封装 │ │ Repository │
│ 响应式设计 │ │ 事务管理 │ │ 数据映射 │
└─────────────────┘ └─────────────────┘ └─────────────────┘
```
## 技术栈
### 前端技术栈
前端采用现代化的技术栈,Vue 3 作为渐进式 JavaScript 框架,提供了强大的响应式能力和组件化开发体验。Element Plus 是基于 Vue 3 的 UI 组件库,提供了丰富的组件和良好的用户体验。Vue Router 是官方的路由管理器,负责页面路由管理。Axios 是 HTTP 客户端库,用于与后端 API 进行通信。Sass 是 CSS 预处理器,让样式编写更加高效。
| 技术 | 版本 | 用途 |
|------|------|------|
| Vue 3 | 3.2.13 | 渐进式JavaScript框架 |
| Element Plus | 2.11.5 | 基于Vue 3的UI组件库 |
| Vue Router | 4.6.3 | 官方路由管理器 |
| Axios | 1.6.0 | HTTP客户端库 |
| Sass | 1.93.2 | CSS预处理器 |
### 后端技术栈
后端采用成熟的企业级技术栈。Spring Boot 是 Java 企业级开发框架,简化了 Spring 应用的开发。Spring Security 提供了强大的安全认证功能。Spring Data JPA 是数据持久层框架,简化了数据库操作。MySQL 是关系型数据库,用于存储系统数据。MinIO 是对象存储服务,用于存储文件。JWT 是 JSON Web Token 认证机制,用于用户认证。Maven 是项目构建工具,用于项目依赖管理和构建。Java 是开发语言,版本要求在 17.0 以上。
| 技术 | 版本 | 用途 |
|------|------|------|
| Spring Boot | 3.5.6 | Java企业级开发框架 |
| Spring Security | 3.5.6 | 安全认证框架 |
| Spring Data JPA | 3.5.6 | 数据持久层框架 |
| MySQL | 8.0+ | 关系型数据库 |
| MinIO | 8.5.4 | 对象存储服务 |
| JWT | 0.11.5 | JSON Web Token认证 |
| Maven | 3.6+ | 项目构建工具 |
| Java | 17.0+ | 开发语言 |
## 项目结构
轻羽云盘项目采用前后端分离的目录结构:
```
LeafPan/
├── frontend/ # 前端项目
│ ├── public/ # 静态资源
│ │ ├── favicon.svg # 网站图标
│ │ └── index.html # HTML模板
│ ├── src/ # 源代码
│ │ ├── components/ # 公共组件
│ │ │ ├── AdminLayout.vue # 管理后台布局
│ │ │ ├── IndexLayout.vue # 首页布局
│ │ │ └── UserLayout.vue # 用户布局
│ │ ├── views/ # 页面组件
│ │ │ ├── LoginPage.vue # 登录页
│ │ │ ├── admin/ # 管理后台页面
│ │ │ │ ├── DashboardPage.vue # 仪表盘
│ │ │ │ ├── LogsPage.vue # 操作日志
│ │ │ │ ├── SystemPage.vue # 系统配置
│ │ │ │ └── UsersPage.vue # 用户管理
│ │ │ ├── user/ # 用户页面
│ │ │ │ ├── DashboardPage.vue # 用户仪表盘
│ │ │ │ ├── FilesPage.vue # 文件管理
│ │ │ │ ├── FavoritesPage.vue # 收藏管理
│ │ │ │ ├── SharedPage.vue # 分享管理
│ │ │ │ ├── TrashPage.vue # 回收站
│ │ │ │ └── SettingsPage.vue # 个人设置
│ │ │ └── index/ # 首页页面
│ │ │ ├── AuthorInfoPage.vue # 作者介绍
│ │ │ ├── ContactUsPage.vue # 联系我们
│ │ │ ├── FaqPage.vue # 常见问题
│ │ │ ├── PrivacyPolicyPage.vue # 隐私保护
│ │ │ ├── ShareAccessPage.vue # 分享访问
│ │ │ ├── UserAgreementPage.vue # 用户协议
│ │ │ └── UserGuidePage.vue # 使用指南
│ │ ├── route/ # 路由配置
│ │ │ └── index.js
│ │ ├── utils/ # 工具函数
│ │ │ └── api.js
│ │ ├── App.vue # 根组件
│ │ └── main.js # 入口文件
│ ├── .env # 环境变量
│ ├── .eslintrc.js # ESLint配置
│ ├── jsconfig.json # JS配置
│ ├── package.json # 依赖配置
│ ├── package-lock.json # 依赖锁定
│ └── vue.config.js # Vue配置
├── backend/ # 后端项目
│ ├── src/main/java/ # Java源代码
│ │ └── com/yangshengzhou/backend/
│ │ ├── config/ # 配置类
│ │ │ ├── MinioConfig.java # MinIO配置
│ │ │ └── SecurityConfig.java # 安全配置
│ │ ├── controller/ # 控制器层
│ │ │ ├── admin/ # 管理员控制器
│ │ │ │ ├── AdminLogController.java
│ │ │ │ ├── AdminStatsController.java
│ │ │ │ ├── AdminSystemConfigController.java
│ │ │ │ └── AdminUserController.java
│ │ │ ├── user/ # 用户控制器
│ │ │ │ ├── AvatarController.java
│ │ │ │ ├── FavoriteController.java
│ │ │ │ ├── FileController.java
│ │ │ │ ├── FolderController.java
│ │ │ │ ├── ShareController.java
│ │ │ │ ├── TrashController.java
│ │ │ │ └── UserController.java
│ │ │ ├── AuthController.java
│ │ │ ├── ConfigController.java
│ │ │ ├── ShareAccessController.java
│ │ │ └── VerificationController.java
│ │ ├── dto/ # 数据传输对象
│ │ ├── entity/ # 实体类
│ │ ├── event/ # 事件处理
│ │ ├── exception/ # 异常处理
│ │ ├── repository/ # 数据访问层
│ │ ├── security/ # 安全相关
│ │ ├── service/ # 服务层
│ │ ├── util/ # 工具类
│ │ ├── utils/ # 工具类
│ │ ├── vo/ # 视图对象
│ │ └── LeafPanApplication.java # 主类
│ ├── src/main/resources/ # 资源文件
│ │ └── application.yml # 应用配置
│ └── pom.xml # Maven配置
├── assets/ # 截图
│ ├── login.png
│ ├── dashboard.png
│ ├── my-files.png
│ └── admin-dashboard.png
├── API_DOCUMENTATION.md # API文档
├── init.sql # 数据库初始化脚本
├── LICENSE # 许可证
├── README.md # 项目说明
└── .gitignore # Git忽略文件
```
## 开发指南
### 前端开发
前端开发需要先进入前端目录,然后安装依赖:
```bash
# 进入前端目录
cd frontend
# 安装依赖
npm install
# 启动开发服务器
npm run serve
# 构建生产版本
npm run build
# 运行测试
npm run test:unit
```
### 后端开发
后端开发需要先进入后端目录:
```bash
# 进入后端目录
cd backend
# 编译项目
mvn clean compile
# 运行应用
mvn spring-boot:run
# 打包部署
mvn clean package
# 运行测试
mvn test
```
## API接口
详细的 API 接口文档请参考:[API_DOCUMENTATION.md](./API_DOCUMENTATION.md)
### 主要接口分类
轻羽云盘提供了丰富的 API 接口,包括认证接口、用户接口、文件接口、文件夹接口、收藏接口、分享接口、回收站接口、头像接口、验证码接口、管理员接口和公开接口等。
认证接口负责用户登录、注册和密码重置等功能。用户接口提供用户信息和存储空间管理功能。文件接口支持文件的上传、下载、预览和删除等操作。文件夹接口允许创建、移动、复制和删除文件夹。收藏接口用于添加、取消和查看收藏内容。分享接口支持创建、访问和管理分享。回收站接口提供恢复和永久删除功能。头像接口用于上传和查看头像。验证码接口支持发送和验证验证码。管理员接口提供用户管理、日志、配置和统计功能。公开接口用于分享访问和文件下载。
### API 使用示例
#### 用户登录:
```bash
curl -X POST "http://localhost:8081/api/auth/login" \
-H "Content-Type: application/json" \
-d '{
"email": "admin@qq.com",
"password": "123456"
}'
```
#### 上传文件:
```bash
curl -X POST "http://localhost:8081/api/file/upload" \
-H "Authorization: Bearer YOUR_JWT_TOKEN" \
-F "file=@document.pdf" \
-F "folderId=1"
```
#### 获取文件列表:
```bash
curl -X GET "http://localhost:8081/api/file/list?folderId=1" \
-H "Authorization: Bearer YOUR_JWT_TOKEN"
```

## 部署说明
### 生产环境部署
#### 1. 前端部署
前端部署需要先构建生产版本:
```bash
cd frontend
npm run build
```
构建完成后,将 `dist` 目录部署到 Nginx 或其他 Web 服务器即可。
#### 2. 后端部署
后端部署需要先打包应用:
```bash
cd backend
mvn clean package
java -jar target/backend-0.0.1-SNAPSHOT.jar
```
#### 3. 数据库部署
数据库部署需要确保 MySQL 8.0+ 已安装,然后执行 `init.sql` 初始化数据库,最后配置数据库连接信息。
#### 4. MinIO 部署(可选)
如果需要使用 MinIO 对象存储服务,需要安装 MinIO 服务,创建存储桶,并配置访问密钥。
### Docker 部署(可选)
使用 Docker 部署可以简化部署流程。
**后端 Dockerfile:**
```dockerfile
FROM openjdk:17-jre-slim
WORKDIR /app
COPY target/backend-0.0.1-SNAPSHOT.jar app.jar
EXPOSE 8081
ENTRYPOINT ["java", "-jar", "app.jar"]
```
**前端 Dockerfile:**
```dockerfile
FROM nginx:alpine
COPY frontend/dist/ /usr/share/nginx/html/
EXPOSE 80
```
## 参与贡献
我们欢迎任何形式的贡献!
1. **Fork 本仓库**
2. **新建功能分支**
```bash
git checkout -b feature/AmazingFeature
```
3. **提交代码**
```bash
git commit -m 'Add some AmazingFeature'
```
4. **推送分支**
```bash
git push origin feature/AmazingFeature
```
5. **新建 Pull Request**
## 版本历史
### v1.0.0 (2026-01-28)
轻羽云盘系统 v1.0.0 正式上线,包含完整的用户认证系统、文件管理功能、文件夹管理功能、分享功能、收藏功能、回收站功能、管理员后台、操作日志和系统配置等核心功能。
## 许可证
本项目采用 MIT 许可证 - 查看 [LICENSE](LICENSE) 文件了解详情。
## 联系方式
- **GitHub 仓库**: [https://github.com/YangShengzhou03/LeafPan](https://github.com/YangShengzhou03/LeafPan)
- **问题反馈**: [GitHub Issues](https://github.com/YangShengzhou03/LeafPan/issues)
- **邮箱**: yangsz03@foxmail.com
## 项目统计




---
**感谢使用轻羽云盘!**
如果这个项目对您有帮助,请给个 Star 支持一下!
[](https://star-history.com/#YangShengzhou03/LeafPan&Date)