跨平台局域网文件传输工具 — Tauri v2 版。
支持多种协议,自动发现局域网设备,拖拽传输,深色/浅色主题,macOS 系统级右键菜单集成。
- 多协议传输 — 局域网 TCP、FTP、SFTP、WebDAV、SMB
- 设备自动发现 — UDP 广播扫描局域网设备,自动列出可选目标
- 拖拽传输 — 拖拽文件/文件夹到窗口即可添加
- 目标管理 — 保存和管理多个传输目标,可设为默认
- 深色/浅色主题 — 一键切换,自动记忆偏好
- macOS 系统集成 — 服务菜单 + Finder "打开方式",系统级右键菜单支持
- Windows 右键菜单 — 右键文件快速传输
- 实时进度 — 传输进度实时显示,支持取消
- 断点续传 — 1MB 以上文件自动支持断点续传
在任何应用中右键选择文本或文件,选择 服务 → "传输到文件传输":
- 文本服务 — 在任何应用中选择文本 → 右键 → 服务 → 传输到文件传输
- 文件服务 — 在 Finder 中选择文件 → 右键 → 服务 → 传输到文件传输
在 Finder 中右键点击任意文件 → 打开方式 → 文件传输
- 使用
objc2crate 实现纯 Rust 的 ObjC 服务处理器 - 通过
NSApplication.servicesProvider注册服务 - 支持
public.utf8-plain-text、public.plain-text、public.file-url等类型 - 自动注册到系统粘贴板服务器(pbs)和 Launch Services
| 方式 | 操作 |
|---|---|
| 拖拽到窗口 | 将文件拖拽到应用窗口的拖放区域 |
| 按钮添加 | 点击 "添加文件" 或 "添加文件夹" 按钮 |
| 服务菜单 (macOS) | 任何应用中右键 → 服务 → 传输到文件传输 |
| 打开方式 (macOS) | Finder 中右键文件 → 打开方式 → 文件传输 |
| 拖拽到 Dock (macOS) | 将文件拖到 Dock 上的应用图标 |
- 从下拉列表选择局域网设备,或通过目标管理添加远程目标
- 点击 "发送" 按钮
- 实时查看传输进度
点击齿轮图标打开目标管理窗口,支持添加:
- 🌐 局域网设备 — 自动扫描发现
- 📁 FTP — 支持主动/被动模式、TLS/SSL
- 🔒 SFTP — 支持密码和密钥认证
- ☁️ WebDAV — WebDAV 远程传输
- 🖥️ SMB — Windows 网络共享
前往 Releases 下载对应平台的安装包。
| 平台 | 安装包 |
|---|---|
| macOS (Apple Silicon) | 文件传输-2.0.0-arm64.dmg |
| macOS (Intel) | 文件传输-2.0.0.dmg |
| Windows (x64) | 文件传输_2.0.0_x64.msi / 文件传输_2.0.0_x64_zh-CN.msi |
| Linux (deb) | 文件传输_2.0.0_amd64.deb |
| Linux (AppImage) | 文件传输_2.0.0_amd64.AppImage |
# 启动前端开发服务器 (http://localhost:1420)
bun run dev
# 启动 Tauri 开发模式
bunx tauri dev
# 构建生产版本
bunx tauri buildmacOS 版本包含系统级右键菜单集成,需要执行后处理脚本:
# 1. 构建应用
bunx tauri build
# 2. 注入 NSServices 和 CFBundleDocumentTypes 到 Info.plist
bash scripts/patch-info-plist.sh "src-tauri/target/release/bundle/macos/文件传输.app"
# 3. 重新签名并注册到 Launch Services
bash scripts/refresh-launch-services.sh "src-tauri/target/release/bundle/macos/文件传输.app"构建完成后,服务菜单和"打开方式"功能将自动可用,无需额外配置。
| 层 | 技术 |
|---|---|
| 桌面框架 | Tauri v2 |
| 后端语言 | Rust |
| 前端 | 原生 HTML / CSS / JavaScript (Win11 风格) |
| 开发服务器 | Bun |
| macOS 集成 | objc2 (纯 Rust ObjC 绑定) |
| 网络传输 | TCP (自定义协议) + UDP (设备发现) |
| 远程协议 | FTP、SFTP (ssh2)、WebDAV、SMB |
| 端口 | 用途 |
|---|---|
| 34567 | TCP 文件传输 |
| 34568 | UDP 设备发现 (广播) |
| 34570 | TCP 设备发现 |
├── src/ # 前端文件
│ ├── index.html # 主窗口
│ ├── destinations.html # 目标管理窗口
│ ├── styles.css # 全局样式 (Win11 风格,含主题)
│ ├── renderer.js # 渲染进程逻辑
│ └── destinations.js # 目标管理逻辑
├── src-tauri/ # Tauri Rust 后端
│ ├── src/
│ │ ├── main.rs # 入口
│ │ ├── lib.rs # 应用初始化
│ │ ├── commands.rs # IPC 命令处理
│ │ ├── macos_bridge.rs # macOS 系统集成 (objc2)
│ │ ├── tcp_server.rs # TCP 接收服务器
│ │ ├── discovery.rs # UDP 设备发现
│ │ ├── transfer.rs # 文件传输核心
│ │ ├── protocols/ # 协议实现 (FTP/SFTP/WebDAV/SMB)
│ │ ├── destinations.rs # 目标存储管理
│ │ ├── security.rs # 安全工具
│ │ └── logger.rs # 日志
│ └── entitlements.plist # macOS 权限配置
├── scripts/ # 构建脚本
│ ├── patch-info-plist.sh # 注入 NSServices 到 Info.plist
│ └── refresh-launch-services.sh # 重新签名并注册
├── test/ # 测试脚本
└── dev-server.js # Bun 开发服务器
MIT License