# 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
[![GitHub stars](https://img.shields.io/github/stars/YangShengzhou03/LeafPan?style=for-the-badge&logo=github)](https://github.com/YangShengzhou03/LeafPan/stargazers) [![GitHub forks](https://img.shields.io/github/forks/YangShengzhou03/LeafPan?style=for-the-badge&logo=github)](https://github.com/YangShengzhou03/LeafPan/network/members) [![GitHub issues](https://img.shields.io/github/issues/YangShengzhou03/LeafPan?style=for-the-badge&logo=github)](https://github.com/YangShengzhou03/LeafPan/issues) [![GitHub license](https://img.shields.io/github/license/YangShengzhou03/LeafPan?style=for-the-badge)](https://github.com/YangShengzhou03/LeafPan/blob/main/LICENSE) [![Vue.js](https://img.shields.io/badge/Vue.js-3.4.0-42b883?style=for-the-badge&logo=vuedotjs)](https://vuejs.org/) [![Spring Boot](https://img.shields.io/badge/Spring%20Boot-3.5.6-6DB33F?style=for-the-badge&logo=springboot)](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 进行安全认证,确保用户数据的安全。支持邮箱验证码快速登录,让登录过程更加便捷。密码重置流程经过精心设计,确保只有合法用户才能重置密码。 系统还提供了完整的操作审计功能,所有操作都会被记录下来,便于追溯和监控,为系统安全提供了有力保障。 ### 系统界面预览 ![轻羽云盘 - 仪表盘](https://gitee.com/Yangshengzhou/leaf-pan/raw/master/assets/admin-dashboard.png) ## 快速开始 ## 环境要求 ### 开发环境 开发轻羽云盘需要准备以下环境: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 ![轻羽云盘 - 登录](https://gitee.com/Yangshengzhou/leaf-pan/raw/master/assets/login.png) ### 3. 核心功能 #### 文件管理 轻羽云盘提供了完整的文件管理功能。用户可以将文件上传到指定的文件夹,支持多种文件格式。下载功能让用户可以随时获取云端文件,在线预览功能支持多种文件格式的直接查看。文件重命名和删除功能让文件管理更加灵活,还支持批量操作文件,提高工作效率。 #### 文件夹管理 文件夹管理功能让用户可以创建多级文件夹,方便文件分类存储。移动和复制功能让用户可以轻松整理文件结构,查看文件夹路径功能让用户清楚知道当前所在位置。 ![轻羽云盘 - 我的文件](https://gitee.com/Yangshengzhou/leaf-pan/raw/master/assets/my-files.png) #### 分享功能 分享功能让用户可以轻松与他人共享文件。创建分享链接后,可以设置访问密码,提高安全性。还可以设置分享链接的有效期,过期后链接自动失效。系统还提供了分享记录查看功能,让用户了解自己的分享历史。 #### 收藏功能 收藏功能让用户可以将重要的文件和文件夹添加到收藏夹,快速访问常用内容,提高工作效率。 #### 回收站 回收站功能为文件删除提供了安全保障。被删除的文件会先进入回收站,用户可以随时查看已删除的文件。恢复功能可以将文件恢复到原来的位置,永久删除功能可以彻底删除不需要的文件,清空回收站功能可以一键删除所有回收站中的文件。 ## 系统架构 轻羽云盘采用经典的三层架构设计: ``` ┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐ │ 前端界面层 │ │ 后端服务层 │ │ 数据存储层 │ │ │ │ │ │ │ │ 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" ``` ![轻羽云盘 - 管理员仪表盘](https://gitee.com/Yangshengzhou/leaf-pan/raw/master/assets/admin-dashboard.png) ## 部署说明 ### 生产环境部署 #### 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 ## 项目统计 ![GitHub Release](https://img.shields.io/github/v/release/YangShengzhou03/LeafPan?style=flat-square) ![GitHub Last Commit](https://img.shields.io/github/last-commit/YangShengzhou03/LeafPan?style=flat-square) ![GitHub Contributors](https://img.shields.io/github/contributors/YangShengzhou03/LeafPan?style=flat-square) ![GitHub Repo Size](https://img.shields.io/github/repo-size/YangShengzhou03/LeafPan?style=flat-square) --- **感谢使用轻羽云盘!**
如果这个项目对您有帮助,请给个 Star 支持一下! [![Star History Chart](https://api.star-history.com/svg?repos=YangShengzhou03/LeafPan&type=Date)](https://star-history.com/#YangShengzhou03/LeafPan&Date)