# filesharingsystem **Repository Path**: merlin-java-bigdata/filesharingsystem ## Basic Information - **Project Name**: filesharingsystem - **Description**: 文件共享系统 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-07-09 - **Last Updated**: 2025-07-26 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 文件共享系统 (File Sharing System) 基于 Python Flask 的完整文件共享系统后端,支持 FastDFS 分布式存储、用户管理、文件管理和分享功能。 ## ✨ 主要功能 ### 🔐 用户管理 - ✅ 用户注册/登录/登出 - ✅ 用户资料管理(更新信息、修改密码) - ✅ 用户账户删除(软删除) - ✅ JWT 认证和令牌刷新 - ✅ 管理员用户管理功能 ### 📁 文件管理 - ✅ 文件上传到 FastDFS(支持本地存储备用) - ✅ 文件下载和预览 - ✅ 文件信息查看和编辑 - ✅ 文件搜索和筛选(按类型、名称等) - ✅ 文件删除(同步删除 FastDFS 和 MySQL 数据) - ✅ 公开文件浏览 ### 🔗 文件分享 - ✅ 创建文件分享链接 - ✅ 设置分享密码和过期时间 - ✅ 限制下载次数 - ✅ 分享链接管理 - ✅ 无需登录下载分享文件 ### 👨‍💼 管理员功能 - ✅ 用户列表查看和管理 - ✅ 用户信息编辑(激活/禁用、权限设置) - ✅ 用户删除(硬删除) - ✅ 系统统计信息 - ✅ 文件类型和用户活动统计 ## 🏗️ 技术架构 ### 后端技术栈 - **Python 3.11** - 编程语言 - **Flask** - Web 框架 - **MySQL** - 关系型数据库 - **FastDFS** - 分布式文件存储 - **Redis** - 缓存和会话存储 - **JWT** - 用户认证 - **SQLAlchemy** - ORM 框架 ## 📁 项目结构 ``` file-sharing-system/ ├── backend/ # 后端项目 (Python Flask) │ ├── app/ # Flask 应用 │ │ ├── __init__.py # 应用初始化 │ │ ├── config.py # 配置文件 │ │ ├── models/ # 数据模型 │ │ │ ├── user.py # 用户模型 │ │ │ └── file.py # 文件模型 │ │ ├── api/ # API 路由 │ │ │ ├── auth.py # 认证接口 │ │ │ ├── users.py # 用户管理接口 │ │ │ └── files.py # 文件管理接口 │ │ ├── services/ # 业务逻辑 │ │ │ └── fastdfs_service.py # FastDFS 服务 │ │ └── utils/ # 工具函数 │ │ └── file_utils.py # 文件处理工具 │ ├── requirements.txt # Python 依赖 │ ├── run.py # 启动文件 │ ├── init_db.py # 数据库初始化 │ ├── test_api.py # API 测试脚本 │ ├── start.sh # 启动脚本 │ └── API_DOCUMENTATION.md # API 文档 ├── frontend/ # 前端项目 (Vue 3) │ ├── src/ │ │ ├── api/ # API 接口 │ │ ├── components/ # 组件 │ │ ├── router/ # 路由配置 │ │ ├── stores/ # 状态管理 │ │ ├── styles/ # 样式文件 │ │ ├── views/ # 页面组件 │ │ ├── App.vue # 根组件 │ │ └── main.js # 入口文件 │ ├── package.json # 前端依赖 │ ├── vite.config.js # 构建配置 │ ├── start.sh # 启动脚本 │ └── README.md # 前端说明 ├── start-all.sh # 一键启动脚本 └── README.md # 项目说明 ``` ## 🚀 快速开始 ### 环境要求 - Python 3.8+ - Node.js 16+ - MySQL 5.7+ 或 8.0+ - Redis (可选,用于缓存) - FastDFS (可选,可使用本地存储) ### 🎯 两种部署方式 ```bash # 查看快速指南 cat QUICK_START.md ``` ### 1. 克隆项目 ```bash git clone cd file-sharing-system ``` ### 2. 选择部署方式 #### 🐳 方式一:Docker模式(推荐) ```bash # 只安装Docker环境 sudo ./install-docker-only.sh # 启动容器化系统 ./docker-start.sh ``` #### 📦 方式二:传统模式 ```bash # 安装所有软件 sudo ./install-all.sh # 启动传统服务 ./start-all.sh ``` ### 3. 访问系统 - **Docker模式**: http://your-server-ip - **传统模式**: http://your-server-ip:3000 - **管理员**: admin / admin123 ### 4. 手动启动(高级用户) #### 配置数据库 创建 MySQL 数据库: ```sql CREATE DATABASE file_sharing_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; CREATE USER 'file_user'@'localhost' IDENTIFIED BY 'file_pass'; GRANT ALL PRIVILEGES ON file_sharing_db.* TO 'file_user'@'localhost'; FLUSH PRIVILEGES; ``` #### 启动后端 ```bash cd backend pip install -r requirements.txt python init_db.py # 初始化数据库 python run.py # 启动后端服务 ``` #### 启动前端 ```bash cd frontend npm install npm run dev # 启动前端服务 ``` ## 🌐 访问系统 ### 开发环境 - **前端地址**: http://localhost:3000 - **后端API**: http://localhost:5000 ### Docker环境 - **统一入口**: http://localhost - **前端直接访问**: http://localhost:3000 - **后端API**: http://localhost:5000 - **FastDFS Tracker**: localhost:22122 - **FastDFS Storage**: localhost:23000 - **FastDFS HTTP**: http://localhost/group1/ ### 默认账户 - **管理员**: `admin` / `admin123` - **测试用户**: `testuser` / `test123` ## 📋 部署方式对比 | 部署方式 | 适用场景 | 优点 | 难度 | |---------|---------|------|------| | **Docker部署** | 生产环境、快速体验 | 无需安装依赖、环境隔离、包含FastDFS | ⭐ | | **传统部署** | 开发环境、学习使用 | 便于调试、完全控制 | ⭐⭐ | ### 推荐选择 - **新手用户**: Docker部署 - **开发者**: 传统部署 - **生产环境**: Docker部署 ## 🔧 常见问题解决 ### MySQL连接失败 ```bash # 快速诊断 sudo ./fix-mysql.sh # 完整配置 sudo ./setup-mysql.sh # 手动启动MySQL sudo systemctl start mysqld ``` ### Docker相关问题 ```bash # 测试Docker环境 ./test-docker.sh # 安装Docker Compose sudo ./install-docker-compose.sh ``` ## 🐧 系统兼容性 ✅ **完全支持** OpenCloudOS 9.x ✅ **兼容支持** CentOS、RHEL、OpenEuler、Anolis OS ✅ **优化适配** 腾讯云、阿里云等云服务器环境 ### 一键安装脚本特性 - ✅ 自动检测系统类型和版本 - ✅ 使用dnf包管理器(性能更好) - ✅ 自动配置EPEL和MySQL官方仓库 - ✅ 可选配置国内镜像源加速下载 - ✅ 完整的开发环境和Docker支持 ## 🗄️ FastDFS 分布式文件系统 ### 功能特性 - **分布式存储** - 支持文件分布式存储和访问 - **高可用性** - Tracker和Storage服务分离 - **HTTP访问** - 支持HTTP协议直接访问文件 - **负载均衡** - 自动负载均衡和故障转移 - **文件去重** - 相同文件自动去重节省空间 ### Docker环境中的FastDFS ```bash # 启动FastDFS服务 ./docker-start.sh # 选择选项3 # 测试FastDFS功能 ./test-fastdfs.sh # 查看FastDFS状态 docker-compose ps fastdfs-tracker fastdfs-storage ``` ### 服务端口 - **Tracker服务**: 22122 - **Storage服务**: 23000 - **HTTP服务**: 8888 (通过Nginx代理到80端口) ### 配置文件 - `fastdfs/tracker.conf` - Tracker配置 - `fastdfs/storage.conf` - Storage配置 - `fastdfs/client.conf` - 客户端配置 ### 存储路径 - **Tracker数据**: Docker volume `tracker_data` - **Storage数据**: Docker volume `storage_data` - **文件访问**: http://localhost/group1/文件路径 ## 📋 主要 API 接口 ### 认证相关 - `POST /api/auth/register` - 用户注册 - `POST /api/auth/login` - 用户登录 - `POST /api/auth/logout` - 用户登出 - `POST /api/auth/refresh` - 刷新令牌 - `GET /api/auth/me` - 获取当前用户信息 ### 用户管理 - `GET /api/users/profile` - 获取用户资料 - `PUT /api/users/profile` - 更新用户资料 - `POST /api/users/change-password` - 修改密码 - `DELETE /api/users/delete` - 删除账户 - `GET /api/users/stats` - 获取用户统计 ### 文件管理 - `POST /api/files/upload` - 文件上传 - `GET /api/files` - 获取文件列表 - `GET /api/files/{id}` - 获取文件详情 - `PUT /api/files/{id}` - 更新文件信息 - `DELETE /api/files/{id}` - 删除文件 - `GET /api/files/{id}/download` - 下载文件 - `GET /api/files/public` - 获取公开文件列表 ### 文件分享 - `POST /api/files/{id}/share` - 创建文件分享 - `GET /api/files/{id}/shares` - 获取文件分享列表 - `GET /api/files/shares/{code}` - 通过分享码获取文件 - `POST /api/files/shares/{code}/download` - 下载分享文件 - `DELETE /api/files/shares/{id}` - 删除文件分享 ### 管理员功能 - `GET /api/users/admin/users` - 获取用户列表 - `GET /api/users/admin/users/{id}` - 获取用户详情 - `PUT /api/users/admin/users/{id}` - 更新用户信息 - `DELETE /api/users/admin/users/{id}` - 删除用户 - `GET /api/users/admin/stats` - 获取系统统计 详细的 API 文档请查看 `backend/API_DOCUMENTATION.md` ## 🔧 配置说明 ### 数据库配置 ```python # 在 app/config.py 中配置 MYSQL_HOST = 'localhost' MYSQL_PORT = 3306 MYSQL_USER = 'file_user' MYSQL_PASSWORD = 'file_pass' MYSQL_DATABASE = 'file_sharing_db' ``` ### FastDFS 配置 ```python # 在 app/config.py 中配置 FASTDFS_TRACKER_HOST = 'localhost' FASTDFS_TRACKER_PORT = 22122 FASTDFS_STORAGE_HOST = 'localhost' FASTDFS_STORAGE_PORT = 23000 ``` ### Redis 配置 ```python # 在 app/config.py 中配置 REDIS_HOST = 'localhost' REDIS_PORT = 6379 REDIS_DB = 0 ``` ## 📊 数据库设计 ### 用户表 (users) - `id` - 主键 - `username` - 用户名(唯一) - `email` - 邮箱(唯一) - `password_hash` - 密码哈希 - `full_name` - 全名 - `avatar_url` - 头像URL - `is_active` - 是否激活 - `is_admin` - 是否管理员 - `last_login` - 最后登录时间 - `created_at` - 创建时间 - `updated_at` - 更新时间 ### 文件表 (files) - `id` - 主键 - `filename` - 存储文件名 - `original_name` - 原始文件名 - `file_path` - FastDFS 文件路径 - `file_size` - 文件大小 - `file_type` - 文件类型 - `mime_type` - MIME 类型 - `file_hash` - 文件 MD5 哈希 - `download_count` - 下载次数 - `is_public` - 是否公开 - `description` - 文件描述 - `uploader_id` - 上传者ID - `created_at` - 创建时间 - `updated_at` - 更新时间 ### 文件分享表 (file_shares) - `id` - 主键 - `share_code` - 分享码(唯一) - `password` - 分享密码 - `expire_time` - 过期时间 - `download_limit` - 下载限制 - `download_count` - 已下载次数 - `is_active` - 是否激活 - `file_id` - 文件ID - `creator_id` - 创建者ID - `created_at` - 创建时间 ## 🧪 测试 ### API 测试 ```bash # 运行 API 测试脚本 cd backend python test_api.py ``` ### 手动测试 1. 启动服务后访问 http://localhost:5000 2. 使用 Postman 或其他 API 测试工具 3. 参考 `API_DOCUMENTATION.md` 进行接口测试 ## 🚀 部署 ### 生产环境配置 1. 设置环境变量: ```bash export FLASK_ENV=production export SECRET_KEY=your-secret-key export JWT_SECRET_KEY=your-jwt-secret export MYSQL_HOST=your-mysql-host export MYSQL_PASSWORD=your-mysql-password ``` 2. 使用 Gunicorn 部署: ```bash pip install gunicorn gunicorn -w 4 -b 0.0.0.0:5000 run:app ``` 3. 配置 Nginx 反向代理(可选) ### Docker 部署(待完善) ```bash # 构建镜像 docker build -t file-sharing-system . # 运行容器 docker run -p 5000:5000 file-sharing-system ``` ## 📝 开发说明 ### 添加新功能 1. 在 `app/models/` 中定义数据模型 2. 在 `app/api/` 中添加 API 接口 3. 在 `app/services/` 中实现业务逻辑 4. 更新 API 文档 ### 代码规范 - 使用 Python PEP 8 代码规范 - 添加适当的注释和文档字符串 - 使用类型提示(推荐) - 编写单元测试 ## 🔒 安全特性 - JWT 认证和授权 - 密码哈希存储 - 文件类型验证 - 文件大小限制 - SQL 注入防护 - XSS 防护 - CORS 配置 ## 📄 许可证 本项目采用 MIT 许可证 - 查看 [LICENSE](LICENSE) 文件了解详情 ## 🤝 贡献 欢迎提交 Issue 和 Pull Request! ## 📞 联系方式 如有问题或建议,请通过以下方式联系: - 提交 GitHub Issue - 发送邮件至项目维护者 ## 🖥️ 界面预览 ### 登录页面 - 苹果风格设计 - 支持用户注册 - 演示账户快速登录 - 响应式布局 ### 主页面 - 现代化文件管理界面 - 网格/列表双视图 - 拖拽上传支持 - 实时搜索筛选 - 文件分享功能 ### 管理后台 - 系统概览仪表板 - 用户管理 - 文件统计分析 - 权限控制 ## 🎯 特色功能 ### 🎨 苹果风格设计 - 毛玻璃效果 (Glassmorphism) - 流畅动画过渡 - 现代化色彩系统 - 响应式适配 ### 📱 移动端适配 - 完全响应式设计 - 触摸友好的交互 - 移动端优化布局 ### 🔒 安全特性 - JWT 认证机制 - 权限分级控制 - 文件访问验证 - 密码加密存储 ### ⚡ 性能优化 - 文件分片上传 - 懒加载优化 - 缓存策略 - 压缩传输 --- **完整的前后端分离文件共享系统,开箱即用!** ### File Shares Table (file_shares) - id, file_id, share_code, expire_time, created_at