# Device Transfer

> 手機到電腦，單檔或整個資料夾都能直接傳。用 6 位數配對碼配對，不必上傳、不必註冊，伺服器只轉手連線資訊，永遠碰不到你的檔案內容。

- URL: https://bytescope.dev/zh-Hant/device-transfer/
- Locale: zh-Hant · Also: [en](https://bytescope.dev/en/device-transfer.md) · [ja](https://bytescope.dev/ja/device-transfer.md)
- Runs: 檔案在兩台裝置之間直接流動。配對伺服器只轉手連線資訊，永遠碰不到你傳的內容。
- Requires: Any modern browser on both devices (WebRTC). Sending a whole folder needs Chrome, Edge or Opera on desktop (File System Access API).
- Updated: 2026-09-08

## What it does

兩台裝置都開這個頁面，一台顯示 6 位數配對碼，另一台輸入或掃描，兩個瀏覽器就會替彼此談出一條直接連線。接著把檔案丟進來 — 整個資料夾也行，目錄結構原封不動 — 位元組就從一台流到另一台，不經過第三個地方。不用註冊、不用裝 App、沒有上傳表單那種容量上限，也不必等檔案先爬上伺服器再爬回來。在同一個 Wi-Fi 底下，速度就是網路能跑多快，實測可以到每秒數十 MB。

### 伺服器只轉手連線資訊，永遠碰不到檔案內容

這句值得看兩遍，因為它就是這頁存在的理由。兩個瀏覽器沒辦法自己找到對方，所以有一個很小的配對服務，把彼此的連線資訊 — 網路上的位址，以及那條加密通道的參數 — 遞給對方。它經手的就只有這些。等兩台之間的路一通，配對服務就退場，之後每一個位元組都走加密的 `WebRTC` 資料通道，在兩台之間直接流動。沒有儲存、沒有紀錄，也沒有東西可以外洩，因為檔案從來沒放上去過。想自己確認的話：傳輸時打開任一端的開發者工具看網路分頁就知道。

### 資料夾、驗證碼，還有斷線之後

資料夾會先送一份清單 — 每一條路徑、每一個大小 — 再一個檔案一個檔案地送，所以兩端都知道要期待什麼，進度條也才有意義。每個檔案在讀出時算一次 `SHA-256`，寫入時再算一次，兩個值對得上，接收端才會留下它；對不上就丟掉，而不是存成一個看起來像樣、其實是壞的檔案。大資料夾傳到一半斷線，重連之後會從停下來的地方接續：接收端說明每個檔案已經寫進去而且驗證過多少，傳送端跳過那些，只有缺的位元組會再走一次。路徑也不會被偷偷改寫 — 接收端系統存不下的名字，會被指名擋下，而不是變成另一個東西送到。

### 老實說的限制

資料夾等級的體驗，最好的是桌機對桌機和 Android；iOS 收得比送得好，因為 Safari 只肯把檔案交給網頁，不肯交資料夾。要在接收端的硬碟上重建真正的目錄樹需要 File System Access，所以那一半只有桌機 Chromium 有；其他環境會先把檔案暫存在瀏覽器的專屬空間，最後打包成一個 zip 交出來，超過 ZIP 格式能表示的範圍就自動分成好幾份。另外這裡刻意不做中繼伺服器：如果兩台之間沒有路可走 — 不同網路、中間卡了電信業者的 NAT — 這頁會直接叫你把兩台接到同一個 Wi-Fi，而不是安靜地把你的檔案推過我們自己的機器。

## Limits

Does not relay through a server: both devices must reach each other directly (same Wi-Fi or a network without symmetric NAT), and nothing is stored in the cloud.

## FAQ

### 我的檔案會經過你們的伺服器嗎？

不會。伺服器經手的只有連線資訊 — 兩個瀏覽器要找到彼此所需要的位址與通道參數。找到之後它就退到一邊，每一個位元組都在你的兩台裝置之間走加密通道直接流動。沒有上傳、沒有留在某個儲存桶裡的複本，事後也沒有東西要刪。想確認而不是相信的話：在任一端打開開發者工具的網路分頁，然後傳一個大檔案 — 你會看到配對那幾筆交換，之後什麼都沒有。

### 速度多快？資料夾可以多大？

同一個 Wi-Fi 下大約每秒數十 MB，幾 GB 的照片是一杯咖啡的時間，不是一個下午。大小上限來自接收端的儲存空間，不是我們：檔案是一小塊一小塊串流過去的，兩端都不會把整份抱進記憶體。實際的天花板是接收端的可用空間，以及當檔案是以 zip 而非資料夾形式收下時 ZIP 格式本身的限制，後者這頁會自動分成好幾份來處理。

### 傳到一半停了，要整個重來嗎？

不用，按重連。接收端會逐檔記錄「已經寫進硬碟而且驗證過幾個位元組」，續傳就是從這份紀錄長出來的，不是用猜的。傳送端會被告知哪些檔案已經完成而整個跳過，中斷的那個檔案則從接收端能證明自己持有的位置重新開始。斷線當下正在傳的檔案，不是從已驗證的點續傳，就是整份丟掉重送；驗證碼確認不了的半截檔案永遠不會被留著。

### 為什麼它叫我把兩台接到同一個 Wi-Fi？

因為這裡沒有中繼伺服器，而這是刻意的取捨，不是還沒做。中繼意味著你的檔案要穿過我們營運的機器，那正是這一頁想避開的性質，而且那份頻寬成本最後也會轉嫁回使用者身上。同一個網路上的兩台裝置幾乎都能直接連上；不同網路的兩台則要看雙方路由器怎麼做，有時通有時不通。不通的時候，這頁會直說，而不是硬撐。

### 到底哪些瀏覽器和裝置真的能用？

只要有 `WebRTC` 和安全連線就能配對成功，現在的桌機與行動瀏覽器都符合。整個資料夾傳出去這件事，桌機 Chromium 最順，它可以真的走過一個目錄；Android 會退回先讀完全部的簡易選擇器；iOS Safari 給的是檔案，不是資料夾。接收端要直接在硬碟上重建目錄樹只有桌機 Chromium 做得到，其他環境改成 zip 下載。這頁是在載入之後真的去問瀏覽器有哪些能力，再告訴你落在哪一格，不是從 user agent 猜的。

## Related tools

- [QR File Transfer](https://bytescope.dev/zh-Hant/qr-file-transfer.md) — 完全不用網路：小檔案靠動態 QR 從螢幕跑到相機。
- [WebRTC Test](https://bytescope.dev/zh-Hant/webrtc-test.md) — 在真的依賴 P2P 之前，先看看你的網路會對它做什麼。
- [File Hash](https://bytescope.dev/zh-Hant/file-hash.md) — 想自己再確認一次傳輸結果，就在兩邊各算一次雜湊。
