Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

12 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

文件传输 (File Transfer)

跨平台局域网文件传输工具 — Tauri v2 版。

支持多种协议,自动发现局域网设备,拖拽传输,深色/浅色主题,macOS 系统级右键菜单集成。

✨ 功能特性

  • 多协议传输 — 局域网 TCP、FTP、SFTP、WebDAV、SMB
  • 设备自动发现 — UDP 广播扫描局域网设备,自动列出可选目标
  • 拖拽传输 — 拖拽文件/文件夹到窗口即可添加
  • 目标管理 — 保存和管理多个传输目标,可设为默认
  • 深色/浅色主题 — 一键切换,自动记忆偏好
  • macOS 系统集成 — 服务菜单 + Finder "打开方式",系统级右键菜单支持
  • Windows 右键菜单 — 右键文件快速传输
  • 实时进度 — 传输进度实时显示,支持取消
  • 断点续传 — 1MB 以上文件自动支持断点续传

🎯 macOS 系统集成

服务菜单(Services Menu)

在任何应用中右键选择文本或文件,选择 服务 → "传输到文件传输"

  • 文本服务 — 在任何应用中选择文本 → 右键 → 服务 → 传输到文件传输
  • 文件服务 — 在 Finder 中选择文件 → 右键 → 服务 → 传输到文件传输

Finder "打开方式"

在 Finder 中右键点击任意文件 → 打开方式 → 文件传输

技术实现

  • 使用 objc2 crate 实现纯 Rust 的 ObjC 服务处理器
  • 通过 NSApplication.servicesProvider 注册服务
  • 支持 public.utf8-plain-textpublic.plain-textpublic.file-url 等类型
  • 自动注册到系统粘贴板服务器(pbs)和 Launch Services

快速开始

添加文件

方式 操作
拖拽到窗口 将文件拖拽到应用窗口的拖放区域
按钮添加 点击 "添加文件" 或 "添加文件夹" 按钮
服务菜单 (macOS) 任何应用中右键 → 服务 → 传输到文件传输
打开方式 (macOS) Finder 中右键文件 → 打开方式 → 文件传输
拖拽到 Dock (macOS) 将文件拖到 Dock 上的应用图标

发送文件

  1. 从下拉列表选择局域网设备,或通过目标管理添加远程目标
  2. 点击 "发送" 按钮
  3. 实时查看传输进度

管理传输目标

点击齿轮图标打开目标管理窗口,支持添加:

  • 🌐 局域网设备 — 自动扫描发现
  • 📁 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 build

macOS 系统集成构建

macOS 版本包含系统级右键菜单集成,需要执行后处理脚本:

# 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

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages