# file-transfer-system **Repository Path**: jun-wan/file-transfer-system ## Basic Information - **Project Name**: file-transfer-system - **Description**: 本项目是一个基于局域网的文件传输与即时通讯系统,支持设备自动发现、文件传输和消息收发等功能。系统采用前后端分离架构,后端使用Java 8开发,前端使用Vue 3 + Element Plus开发。无需用户注册和登录,通过浏览器指纹技术自动生成设备标识。 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-05-12 - **Last Updated**: 2025-08-01 ## Categories & Tags **Categories**: Uncategorized **Tags**: SpringBoot, vue3, JavaScript, elementPlus, Netty ## README # 局域网文件传输与即时通讯系统 ## 项目概述 本项目是一个基于局域网的文件传输与即时通讯系统,支持设备自动发现、文件传输和消息收发等功能。系统采用前后端分离架构,后端使用Java 8开发,前端使用Vue 3 + Element Plus开发。无需用户注册和登录,通过浏览器指纹技术自动生成设备标识。 ## 技术栈 ### 后端技术栈 - Java 8 - Spring Boot 2.7.x - MySQL 5.7 - WebSocket (用于即时通讯) - Netty (用于文件传输) - MyBatis Plus - Lombok ### 前端技术栈 - Vue 3 - Element Plus - Axios - Vue Router - Pinia (状态管理) - WebSocket - Vite (构建工具) - Fingerprint.js (浏览器指纹生成) ## 系统架构 ``` file-transfer-system/ ├── backend/ # 后端项目 │ ├── src/ │ │ ├── main/ │ │ │ ├── java/ │ │ │ │ ├── controller/ # 控制器层 │ │ │ │ ├── service/ # 服务层 │ │ │ │ ├── dao/ # 数据访问层 │ │ │ │ ├── model/ # 数据模型 │ │ │ │ ├── config/ # 配置类 │ │ │ │ ├── util/ # 工具类 │ │ │ │ ├── websocket/ # WebSocket相关 │ │ │ │ └── discovery/ # 设备发现相关 │ │ │ └── resources/ │ │ │ ├── application.yml │ │ │ └── mapper/ # MyBatis映射文件 │ └── pom.xml │ └── frontend/ # 前端项目 ├── src/ │ ├── api/ # API接口 │ ├── components/ # 组件 │ ├── views/ # 页面 │ ├── store/ # 状态管理 │ ├── router/ # 路由配置 │ └── utils/ # 工具函数 ├── package.json └── vite.config.js ``` ## 核心功能实现 ### 1. 设备发现 - 使用UDP广播实现局域网设备发现 - 设备启动时广播自己的信息(设备名称、设备标识、IP地址、端口等) - 其他设备监听UDP广播,发现新设备时更新设备列表 - 设备标识基于浏览器指纹技术生成,存储在localStorage中 ### 2. 文件传输 #### 密钥传输模式 - 发送方生成临时密钥 - 接收方输入密钥后建立连接 - 使用Netty实现高效的文件传输 - 支持断点续传和传输进度显示 #### 直接传输 - 基于WebSocket实现实时文件传输 - 支持拖拽上传和进度显示 - 文件传输历史记录 ### 3. 即时通讯 - 基于WebSocket实现实时消息 - 支持文本消息、表情、图片等 - 消息历史记录存储 - 在线状态显示 ## 数据库设计 ### 设备表(device) ```sql CREATE TABLE `device` ( `id` varchar(64) NOT NULL COMMENT '设备标识', `device_name` varchar(50) NOT NULL COMMENT '设备名称', `ip_address` varchar(50) NOT NULL COMMENT 'IP地址', `status` tinyint(4) NOT NULL DEFAULT '0' COMMENT '在线状态', `last_seen` datetime NOT NULL COMMENT '最后在线时间', PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; ``` ### 消息记录表(message) ```sql CREATE TABLE `message` ( `id` bigint(20) NOT NULL AUTO_INCREMENT, `sender_id` varchar(64) NOT NULL COMMENT '发送设备ID', `receiver_id` varchar(64) NOT NULL COMMENT '接收设备ID', `content` text NOT NULL COMMENT '消息内容', `type` tinyint(4) NOT NULL COMMENT '消息类型', `status` tinyint(4) NOT NULL COMMENT '消息状态', `create_time` datetime NOT NULL, PRIMARY KEY (`id`), KEY `idx_sender_receiver` (`sender_id`,`receiver_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; ``` ### 文件传输记录表(file_transfer) ```sql CREATE TABLE `file_transfer` ( `id` bigint(20) NOT NULL AUTO_INCREMENT, `sender_id` varchar(64) NOT NULL COMMENT '发送设备ID', `receiver_id` varchar(64) NOT NULL COMMENT '接收设备ID', `file_name` varchar(255) NOT NULL COMMENT '文件名', `file_size` bigint(20) NOT NULL COMMENT '文件大小', `transfer_key` varchar(32) NOT NULL COMMENT '传输密钥', `status` tinyint(4) NOT NULL COMMENT '传输状态', `create_time` datetime NOT NULL, `update_time` datetime NOT NULL, PRIMARY KEY (`id`), KEY `idx_transfer_key` (`transfer_key`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; ``` ## 部署说明 1. 后端部署 - 安装JDK 8 - 安装MySQL 5.7 - 配置application.yml - 执行数据库脚本 - 运行Spring Boot应用 2. 前端部署 - 安装Node.js - 安装依赖:`npm install` - 开发环境运行:`npm run dev` - 生产环境构建:`npm run build` ## 开发计划 1. 第一阶段:基础架构搭建 - 前后端项目初始化 - 数据库设计和实现 - 设备标识生成机制 2. 第二阶段:核心功能实现 - 设备发现功能 - 文件传输功能 - 即时通讯基础功能 3. 第三阶段:功能完善 - WebSocket服务实现 - 消息收发功能 - 在线状态管理 4. 第四阶段:UI优化和测试 - 界面美化 - 功能测试 - 性能优化 ## 注意事项 1. 安全性考虑 - 文件传输加密 - 数据验证 - 设备验证机制 2. 性能优化 - 大文件分片传输 - 消息队列缓冲 - 网络连接优化 3. 用户体验 - 断点续传 - 传输进度显示 - 离线消息存储