# FileShareChat **Repository Path**: uzmas/file-share-chat ## Basic Information - **Project Name**: FileShareChat - **Description**: 文件共享中心 - 群聊版 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-04-02 - **Last Updated**: 2026-06-04 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 📁 文件共享中心 - 群聊版 一个基于 Flask 的文件共享服务器,支持文件上传下载和实时群聊功能,带有美观的 GUI 启动器和系统托盘支持。 ## ✨ 功能特性 ### 📤 文件共享 - **拖拽上传** - 像 Windows 共享文件夹一样,直接拖拽文件到上传区域 - **点击上传** - 支持选择多个文件批量上传 - **文件夹上传** - 支持整个文件夹上传,保持目录结构 - **文件下载** - 一键下载共享文件,文件夹自动打包为 ZIP - **文件删除** - 管理已上传的文件和文件夹 - **进度显示** - 实时显示上传进度条 - **自动重命名** - 文件名冲突时自动添加数字后缀 ### 💬 实时群聊 - **WebSocket 实时通信** - 消息即时送达,无需刷新 - **用户标识** - 用户名为 IP:端口格式,易于识别 - **在线人数** - 实时显示当前在线用户数量 - **连接状态** - 显示连接/未连接状态 - **自动重连** - 断线后自动尝试重新连接 - **系统消息** - 用户加入/离开自动通知 - **文件分享通知** - 上传文件时自动发送分享通知 ### 🎨 界面设计 - **响应式布局** - 支持桌面和移动设备 - **美观的渐变主题** - 紫色渐变背景 - **文件图标** - 根据文件类型显示不同图标 - **消息气泡** - 类似微信的聊天气泡设计 ### 🖥️ 桌面特性 - **GUI 启动器** - 可视化启动界面,显示服务器状态 - **系统托盘** - 最小化到托盘,随时控制服务器 - **端口检测** - 自动检测并释放被占用的端口 - **一键访问** - 直接从启动器打开浏览器 ## 🚀 快速开始 ### 环境要求 - Python 3.7+ - Flask - flask-cors - flask-sock - Pillow - pystray - tkinter (通常已随 Python 安装) ### 安装依赖 ```bash pip install flask flask-cors flask-sock Pillow pystray ``` ### 启动服务器 #### 方法一:双击启动(推荐) 双击运行 `start.bat` 文件,将打开 GUI 启动器 #### 方法二:命令行启动(仅服务器模式) ```bash python file_server.py --server-only ``` #### 方法三:完整 GUI 模式 ```bash python file_server.py ``` ### 访问应用 启动后,在浏览器中访问: - 本机访问:http://localhost:5000 - 局域网访问:http://你的IP:5000 ## 📁 项目结构 ``` file-share-chat/ ├── file_server.py # 主程序文件(包含服务器和 GUI) ├── start.bat # Windows 一键启动脚本 ├── create_icon.py # 图标创建脚本 ├── app_icon.ico # 应用图标 ├── FileShareServer.spec # PyInstaller 打包配置 ├── file_server.spec # 备用打包配置 ├── build.bat # 打包脚本 ├── .gitignore # Git 忽略文件配置 ├── README.md # 项目说明文档 ├── download/ # 文件存储目录(自动创建) └── temp/ # 临时文件目录(自动创建) ``` ## 🔧 配置说明 ### 修改端口 在 `file_server.py` 文件中修改端口常量: ```python PORT = 5000 ``` ### 修改文件存储目录 默认存储在程序目录下的 `download` 文件夹: ```python DOWNLOAD_FOLDER = os.path.join(APP_DIR, 'download') ``` ### 添加支持的文件类型 在 `file_server.py` 中修改 `ALLOWED_EXTENSIONS` 集合: ```python ALLOWED_EXTENSIONS = {'txt', 'pdf', 'png', 'jpg', 'jpeg', 'gif', ...} ``` ## 🌐 API 接口 ### 文件操作 | 方法 | 路径 | 描述 | |------|------|------| | GET | `/` | 主页面 | | GET | `/files` | 获取文件列表(JSON) | | POST | `/upload` | 上传文件 | | POST | `/upload-folder` | 上传文件夹 | | GET | `/download/` | 下载文件或文件夹(ZIP) | | DELETE | `/delete/` | 删除文件或文件夹 | ### 群聊 WebSocket - `WS /chat` - WebSocket 群聊连接 ## 💡 使用技巧 ### 文件上传 1. 拖拽文件或文件夹到上传区域 2. 或点击"选择文件"按钮上传单个/多个文件 3. 或点击"选择文件夹"按钮上传整个文件夹 4. 上传完成后自动刷新文件列表 5. 上传文件时会自动在群聊中发送分享通知 ### 群聊功能 1. 在右侧聊天框输入消息 2. 按 Enter 或点击发送按钮发送 3. 自己的消息显示在右侧(紫色) 4. 他人的消息显示在左侧(灰色) 5. 系统消息显示在中间(黄色) ### 局域网共享 - 确保防火墙允许 5000 端口 - 其他设备通过 http://你的IP:5000 访问 - 所有连接到同一服务器的用户都在同一个群聊中 ### GUI 启动器 - **启动服务器** - 点击"启动服务器"按钮启动 - **停止服务器** - 点击"停止服务器"按钮停止 - **复制地址** - 点击"复制"按钮复制访问地址 - **打开浏览器** - 点击"在浏览器中打开"直接访问 - **最小化** - 关闭窗口会最小化到系统托盘 ### 系统托盘 - **双击图标** - 显示主界面 - **显示界面** - 从托盘恢复主窗口 - **启动服务器** - 在托盘启动服务器 - **停止服务器** - 在托盘停止服务器 - **退出** - 完全退出程序 ## ⚠️ 注意事项 1. **生产环境** - 当前使用的是 Flask 开发服务器,生产环境建议使用 Gunicorn 或 uWSGI 2. **文件安全** - 默认允许上传常见文件类型,可根据需要修改 `ALLOWED_EXTENSIONS` 3. **大文件上传** - 大文件上传可能需要调整服务器配置 4. **数据持久化** - 上传的文件存储在 `download` 文件夹中,该文件夹已被添加到 `.gitignore` 5. **系统托盘** - 在某些 Linux 环境下可能需要额外的系统依赖 ## 🔄 打包说明 如需打包为独立可执行文件: ```bash pip install pyinstaller pyinstaller FileShareServer.spec ``` 或运行 `build.bat` 脚本。 ## 📝 更新日志 ### v2.0.0 - ✅ 新增 GUI 启动器界面 - ✅ 新增系统托盘支持 - ✅ 新增端口自动检测和释放 - ✅ 新增文件夹上传功能 - ✅ 新增文件夹下载(ZIP打包) - ✅ 新增启动加载动画 - ✅ 优化文件列表显示(区分文件和文件夹) ### v1.0.0 - ✅ 文件上传下载功能 - ✅ 拖拽上传支持 - ✅ 实时群聊功能 - ✅ WebSocket 通信 - ✅ 响应式界面设计 ## 🤝 贡献 欢迎提交 Issue 和 Pull Request! ## 📄 许可证 MIT License --- Made with ❤️ by File Server Team