# shareFile **Repository Path**: xiaobaer/share-file ## Basic Information - **Project Name**: shareFile - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2026-07-29 - **Last Updated**: 2026-08-02 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # ShareFile - 跨平台文件共享工具 一款免安装的跨平台文件共享工具,支持局域网和广域网文件传输,无需注册账号,运行即可使用。手机只需浏览器输入网址即可传文件到电脑,无需安装任何软件。 ## ✨ 功能特性 - 📁 **文件传输** - 支持拖拽上传、文件下载、删除管理 - 📱 **手机端上传页** - 手机浏览器访问网址即可上传文件,无需安装 APP - 🌐 **局域网发现** - 自动发现同一局域网内的设备 - 🔗 **广域网配对** - 通过配对码实现远程设备连接(WebRTC P2P 直连) - 🚇 **穿透服务** - 支持 localtunnel / serveo / ngrok 三种方案,跨网络传输 - 📱 **二维码连接** - 扫码快速建立连接 - 🌍 **多语言支持** - 支持中文/English 双语切换 - 📦 **免安装** - 单文件可执行,无需安装 ## 🛠️ 技术栈 ### 前端 - **Nuxt 4** - Vue 3 全栈框架 - **Vue 3** - 渐进式 JavaScript 框架 - **TypeScript** - 类型安全 - **Tailwind CSS** - 原子化 CSS 框架 - **Vue I18n** - 国际化支持(自定义插件) - **QRCode.js** - 二维码生成 ### 后端 - **Tauri 2** - 跨平台桌面应用框架 - **Rust** - 系统级编程语言 - **Axum** - HTTP/WebSocket 服务器 - **Tokio** - 异步运行时 - **WebRTC** - P2P 直连传输 ## 📁 项目结构 ``` shareFile/ ├── src-tauri/ # Tauri Rust 后端 │ ├── src/ │ │ ├── main.rs # 应用入口,定义 Tauri 命令 │ │ ├── lib.rs # 库入口,暴露模块供 example 使用 │ │ ├── server.rs # HTTP/WebSocket 服务器 + 手机端页面 │ │ ├── mdns.rs # mDNS 服务发现 │ │ ├── pairing.rs # 广域网配对码逻辑 │ │ ├── tunnel.rs # 穿透服务(localtunnel/serveo/ngrok) │ │ └── webrtc.rs # WebRTC 信令会话管理 │ ├── examples/ │ │ └── test_server.rs # HTTP 服务测试程序 │ ├── Cargo.toml # Rust 依赖配置 │ ├── build.rs # Tauri 构建脚本 │ └── tauri.conf.json # Tauri 配置文件 ├── src/ # Nuxt 前端 │ ├── components/ # Vue 组件 │ │ ├── DeviceList.vue # 设备列表组件 │ │ ├── FileTransfer.vue # 文件传输组件 │ │ ├── QRCodeDisplay.vue # 二维码显示组件 │ │ └── PairingCode.vue # 配对码组件 │ ├── plugins/ │ │ └── i18n.ts # 自定义 Vue I18n 插件 │ ├── App.vue # 主应用组件 │ ├── main.ts # 应用入口 │ └── style.css # 全局样式 ├── i18n/lang/ # 语言包 │ ├── zh.json # 中文语言包 │ └── en.json # 英文语言包 ├── nuxt.config.ts # Nuxt 配置 ├── package.json # npm 依赖配置 └── .github/workflows/ └── build.yml # GitHub Actions 构建配置 ``` ## 🚀 快速开始 ### 开发模式 ```bash # 安装依赖 npm install # 启动开发服务器 npm run dev # 或使用 Tauri 开发模式 npx tauri dev ``` ### 构建生产版本 ```bash # 构建前端 npm run build # 构建 Windows 可执行文件 cd src-tauri cargo build --release ``` ### 完整打包 ```bash # Windows NSIS 安装包 npx tauri build --target x86_64-pc-windows-msvc # Linux AppImage npx tauri build --target x86_64-unknown-linux-gnu ``` ## 📖 使用说明 ShareFile 提供三种文件传输方式,按使用场景选择: ### 方式一:局域网传输(同一 WiFi) 适用于手机和电脑在同一个局域网内。 1. 电脑启动 ShareFile 应用 2. 在应用界面查看「内网地址」(如 `http://192.168.1.6:8080`) 3. 手机浏览器输入该地址 4. 手机看到上传页面,选择文件即可上传到电脑 **也可扫码连接**:用手机扫描界面右侧的二维码,自动打开网址。 ### 方式二:广域网传输 - 穿透服务(跨网络) 适用于手机和电脑不在同一网络(如手机用 4G/5G)。手机只需浏览器,无需安装软件。 1. 电脑启动 ShareFile 应用 2. 点击「启用穿透」按钮,等待生成公网网址 3. 网址格式如 `https://xxx.localtunnel.me` 4. 手机用任何网络浏览器打开该公网网址 5. 手机看到上传页面,选择文件即可上传到电脑 **穿透服务方案:** | 方案 | 依赖 | 安装命令 | 特点 | |------|------|----------|------| | serveo | **无需安装** | 内置 russh 库实现 | 首选方案,已集成到应用 | | localtunnel | Node.js | `npm install -g localtunnel` | 简单但不稳定,常报 503 | | cloudflared | cloudflared 程序 | [下载](https://github.com/cloudflare/cloudflared/releases) | **推荐**,免费稳定,无需注册 | | ngrok | ngrok 程序 | [官网下载](https://ngrok.com) | 最稳定,需注册账号 | 应用会按 **serveo → localtunnel → cloudflared → ngrok** 顺序自动尝试,失败自动切换。 **serveo 已内置集成**:使用 Rust 的 russh 库直接在应用内实现 SSH 远程端口转发,无需系统安装 SSH 客户端,Windows 和 Linux 均可直接使用。 **cloudflared 推荐**:Cloudflare 的免费隧道服务,稳定可靠,无需注册即可使用。下载后添加到系统 PATH 即可。 ### 方式三:广域网传输 - WebRTC 配对(双方都用本应用) 适用于双方都运行 ShareFile 应用,P2P 直连,速度快。 1. 在发送方设备点击「生成配对码」 2. 将配对码分享给接收方 3. 接收方输入配对码并点击「加入配对」 4. 配对成功后即可进行文件传输 ### 文件管理 上传的文件保存在电脑的 `./uploads/` 目录,可在手机端页面或电脑端管理: - **下载**:点击文件右侧「下载」按钮 - **删除**:点击文件右侧「删除」按钮 ### 语言切换 - 点击页面右上角的「中文 / English」按钮切换语言 - 当前语言高亮显示 ## 🔧 配置说明 ### 服务器端口 默认端口为 8080,可在代码中修改: ```rust // src-tauri/src/main.rs server::run_server(server_state, 8080).await ``` ### HTTP 路由 | 路由 | 方法 | 功能 | |------|------|------| | `/` | GET | 手机端上传页面 | | `/app/` | GET | 桌面应用前端 | | `/upload` | POST | 文件上传 | | `/files` | GET | 获取文件列表 | | `/download/{filename}` | GET | 下载文件 | | `/delete/{filename}` | DELETE | 删除单个文件 | | `/delete` | DELETE | 批量删除文件(JSON: `{ "files": ["file1.txt", "file2.pdf"] }`) | | `/health` | GET | 健康检查 | | `/ws` | GET | WebSocket 信令 | ### 语言包扩展 如需添加新语言,在 `i18n/lang/` 目录创建对应语言 JSON 文件,并在 `plugins/i18n.ts` 中配置。 ## 📦 构建产物 | 平台 | 产物路径 | |------|----------| | Windows | `src-tauri/target/release/share-file.exe` | | Linux | `src-tauri/target/x86_64-unknown-linux-gnu/release/share-file` | | Windows NSIS | `src-tauri/target/release/bundle/nsis/ShareFile_1.0.0_x64-setup.exe` | | Linux AppImage | `src-tauri/target/x86_64-unknown-linux-gnu/release/bundle/appimage/share-file_1.0.0_amd64.AppImage` | ## 🌐 浏览器访问 启动应用后,可通过以下方式访问: | 访问方式 | 地址 | 适用场景 | |----------|------|----------| | 手机上传页 | `http://:8080/` | 手机传文件到电脑 | | 桌面应用 | `http://:8080/app/` | 完整应用界面 | | 本机测试 | `http://localhost:8080/` | 本机调试 | | 公网访问 | `https://xxx.localtunnel.me/` | 跨网络传输 | ## ❓ 常见问题 ### Q: 穿透服务报 503 错误怎么办? A: localtunnel 免费服务偶尔不稳定。可以:停止穿透后重新启用获取新地址,或安装 ngrok(更稳定)。 ### Q: 手机和电脑必须同一 WiFi 吗? A: 不需要。同一 WiFi 用内网地址即可;不同网络用穿透服务获取公网网址。 ### Q: 手机需要安装软件吗? A: 不需要。手机用任意浏览器打开网址即可上传文件。 ### Q: WebRTC 和穿透服务有什么区别? A: WebRTC 需要双方都运行本应用,P2P 直连速度快;穿透服务只需电脑运行应用,手机用浏览器访问,更方便但依赖第三方隧道。 ## 📝 License MIT License ## 🤝 贡献 欢迎提交 Issue 和 Pull Request!