Skip to content
huiihaoPublic

About

孤岛环境纯浏览器离线文件传输工具,通过二维码序列传文件。无需安装、无需服务器、无需网络。Air-gapped browser-based offline file transfer tool that transmits files via QR code sequences. No installation, server, or network required.

Topics

Resources

Stars

18 stars

Watchers

0 watching

Forks

Latest commit

 

History

99 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

QRSync_icon

简体中文 • English

纯浏览器实现 完全离线工作 中文支持 英文支持 License GitHub Stars

QRSync — 纯浏览器实现、完全离线的孤岛文件传输工具。

通过二维码序列,在无网络、无 USB、无剪贴板、仅保留视觉界面的孤岛环境中传输任意文件。

在线体验 • 为什么选择 QRSync • 功能特点 • 快速开始 • 技术原理 • 本地使用


🌐 在线体验

👉 点击访问 QRSync

下载本仓库压缩包,页面加载完成后即可断开网络离线使用。

Screenshot

💡 为什么选择 QRSync

孤岛环境指没有网络连接、USB 设备被禁用、剪贴板被限制,仅保留屏幕和摄像头的极端场景。

场景 QRSync 方案
🔌 内网隔离的服务器 手机扫描屏幕二维码即可传出文件
🏢 安全管控严格的办公环境 不依赖 USB、蓝牙、WiFi,纯视觉传输
📱 手机与电脑间的临时传文件 无需安装 App,打开浏览器即可互传
🚫 所有常规传输手段被禁用 二维码是最后可用的数据通道

核心优势:

  • 零依赖 — 无需安装软件、无需服务器、无需网络
  • 纯离线 — 所有数据处理在浏览器本地完成,不上传任何信息
  • 跨平台 — 有浏览器就能用,Windows、macOS、Linux、Android、iOS 全覆盖

✨ 功能特点

特性 说明
🌐 纯浏览器实现 无需安装任何软件,无需服务器支持,打开即用
📶 完全离线工作 在隔绝网络的环境下正常使用,数据不出本地
🔒 数据完整性校验 CRC32 校验确保数据传输准确无误,分片级验证
📁 支持任意文件类型 文本、图片、文档、压缩包均可传输
🇨🇳 中文文件名完美支持 中文文件名无乱码,UTF-8 编码保证兼容性
💾 断点续传 接收进度自动保存至 IndexedDB,刷新页面不丢失
📱 移动端适配 针对手机摄像头扫描场景优化界面和交互
🎨 精美简约界面 现代简约风格设计,操作流程清晰直观

🚀 快速开始

发送方: 打开 发送端 → 选择文件 → 点击「生成二维码」→ 按顺序展示二维码

接收方: 打开 接收端 → 允许摄像头权限 → 按顺序扫描二维码 → 下载文件


📖 使用方法

📤 发送文件

  1. 打开 发送端
  2. 点击或拖拽选择要传输的文件
  3. 调整分片大小和二维码尺寸(可选,默认值适用于大多数场景)
  4. 点击「生成二维码」按钮
  5. 按顺序展示二维码供接收端扫描
Sender Interface

📥 接收文件

  1. 打开 接收端
  2. 点击「开始扫描」按钮,允许摄像头权限
  3. 按顺序扫描所有数据二维码
  4. 最后扫描文件名二维码(橙色边框标识)
  5. 点击「重组文件」按钮
  6. 点击「下载文件」保存到本地
Receiver Interface 1 Receiver Interface 2

🔧 技术原理

数据流

 原始文件  ──[deflate 压缩]──▶  压缩数据  ──[分片]──▶  数据分片  ──[二维码编码]──▶  扫码传输
                                                                                      │
 完整文件  ◀──[合并重组]──  接收数据  ◀──[二维码解码]──  扫码接收  ◀──────────────────────┘

二维码数据结构

数据分片:

{
  "i": 0,          // 分片索引
  "t": 5,          // 总分片数
  "f": "ABC12",    // 文件指纹
  "h": "a3f9b",    // CRC32 校验码
  "d": "base64…"   // 数据内容
}

文件名分片:

{
  "t": "fn",       // 类型标识 (fn = 文件名)
  "f": "XYZ89",    // 文件指纹
  "n": "base64…",  // 编码后的文件名
  "s": 1024,       // 文件大小(字节)
  "ts": 1234567890,// Unix 时间戳
  "tc": 10,        // 总分片数
  "h": "abc12"     // CRC32 校验码
}

核心技术栈

用途 库 说明
压缩算法 pako zlib/deflate 浏览器端实现
二维码生成 qrcode.js 纯 JS 二维码生成
二维码扫描 ZXing 多格式条码扫描
本地存储 localForage IndexedDB 异步存储
数据校验 CRC32 分片完整性校验

💻 本地使用

方法一:直接打开

  1. 下载本仓库代码并解压
  2. 双击 index.html 打开首页
  3. 分别打开发送端和接收端即可使用

方法二:本地服务器

git clone https://github.com/huiihao/QRSync.git
cd QRSync

# Python
python -m http.server 8080

# 或 Node.js
npx serve .

# 浏览器访问 http://localhost:8080

📦 项目结构

QRSync/
├── index.html               # 入口页面
├── sender/index.html        # 发送端
├── receiver/index.html      # 接收端
├── js/
│   ├── qrcode.min.js        # 二维码生成库
│   ├── pako.min.js          # 压缩库
│   ├── jszip.min.js         # ZIP 打包库
│   ├── FileSaver.min.js     # 文件保存库
│   ├── zxing-library.min.js # 二维码扫描库
│   ├── jsQR.js              # 二维码识别库
│   └── localforage.min.js   # 本地存储库
├── README.md                # 中文文档
├── README_EN.md             # 英文文档
└── docs/PACKAGING.md        # 打包说明

本项目为纯前端实现,无后端依赖,所有第三方库均本地化部署。


🛠️ 打包为可执行文件

参考 docs/PACKAGING.md 了解如何将本项目打包为独立的可执行文件(Windows / Linux / macOS)。


⚙️ 配置说明

分片大小

参数 说明
范围 400 – 1200 字节
默认 600 字节
建议 较小分片提高扫描成功率,但会增加二维码数量

二维码尺寸

参数 说明
范围 256 – 800 像素
默认 400 像素
建议 根据屏幕尺寸和扫描距离调整

📝 注意事项

  1. 扫描顺序 — 请按顺序扫描所有数据分片,最后扫描文件名二维码(橙色边框)
  2. 分片大小 — 建议保持默认 600 字节,过大分片可能导致二维码无法识别
  3. 文件大小 — 建议不超过 10MB,过大文件会生成大量二维码
  4. 屏幕亮度 — 确保发送端屏幕亮度足够,以提高扫描成功率
  5. 摄像头对焦 — 保持手机与屏幕适当距离,确保二维码清晰
  6. 校验失败 — 如遇到校验失败,重新扫描该二维码即可

🔒 隐私说明

  • 所有数据仅在浏览器本地处理,不会上传到任何服务器
  • 接收进度使用浏览器 IndexedDB 存储,不涉及隐私泄露
  • CRC32 校验确保数据完整性,文件指纹机制防止不同文件混淆

🤝 贡献

欢迎提交 Issue 和 Pull Request!

  1. Fork 本仓库
  2. 创建特性分支 (git checkout -b feature/AmazingFeature)
  3. 提交修改 (git commit -m 'Add some AmazingFeature')
  4. 推送到分支 (git push origin feature/AmazingFeature)
  5. 打开 Pull Request

📄 许可证

本项目基于 MIT 许可证开源。


🙏 致谢


Made with ❤️ by QRSync Team

About

孤岛环境纯浏览器离线文件传输工具,通过二维码序列传文件。无需安装、无需服务器、无需网络。Air-gapped browser-based offline file transfer tool that transmits files via QR code sequences. No installation, server, or network required.

Topics

Resources

Stars

18 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages