【Wifi】
- 電腦上傳檔案到某伺服器再讓 android 下載
- 透過FTP做檔案分享
- 啟動 android 藍芽,透過物件推送將檔案送給 android
但是如果電腦沒有藍芽模組呢?如果不知道電腦的 IP 呢?
最近在 android 手機上出現的一個新的檔案傳輸方法,先在 android 手機上
下載好 awesomeDrop Client 端,並連上網路(透過 Wifi 或 3G),接著電腦連到
http://labs.dashwire.com/drop 會取得一組 PIN 碼,將這個 PIN 碼輸入到手機上
就可以開始等待檔案了。
接著只要在電腦端把檔案拖曳到瀏覽器的指定區域上,就可以將檔案 PUSH 給
android 手機了。
雖然這個方法傳輸要經過 awesome server,速度上可能有待觀察,而且如果伺服器關
機就沒辦法傳檔,不過這種星新穎的傳輸方式還是令人眼睛為之一亮。
而且其實真的蠻方便的。
這邊是我製作的 for PC 端的接收器
接著就來解說一下 AwesomeDrop 的檔案傳輸方式:
很簡單,他走的是 80 port,先不論電腦(發送)端的狀況,首先
手機啟動程式後,會發送 HTTP request 給 awesome server 確定
server 是不是還活著,接著等待輸入 PIN 碼。
輸入 PIN 碼後,會發送 GET request 給 Server,裡面附帶著對應的 PIN
http://labs.dashwire.com/session?pin=PIN-Number
如果這個 PIN 有對應的發送(PC)端在等待,就會傳回
{"download_host":"http://labs.dashwire.com"}
的 json 資料,定且給予 SessionID (設定在 Cookie 中)
(如果 PIN 不存在,會傳回 404 Not Found)
接著會導向 /download (經由 302 Temporarily Moved 做導向)
並且等待伺服器回應,其實這邊就是為什麼PC端丟檔案上去手機
端會馬上收到回應,因為手機發送 GET /download 後伺服器一直
沒有回應,等到有檔案上傳後才會回應,就這麼簡單。
接著當有檔案上傳時,伺服器回應給手機一組 json 資料,像這樣:
{"name":"1.txt","size":4,"type":"text/plain","fileId":"9ezb02.u4v46de7b9"}
name是上傳的檔案名字,如果是中文會用 \uXXXX 的方式呈現
size 是這個檔案的大小
type 是 MIME Type
fileId 就是這個檔案的 ID
由於回應帶著 Location 的導向 Header:
http://labs.dashwire.com/download/9ezb02.u4v46de7b9
直接帶到下載頁面下載檔案。
等待檔案下載完成後,就會再發送 http request GET /download
如此反覆進行。
而如果電腦端按下 reset session 時,伺服器就會回應給等待 GET /download
的手機 {"action":"reset"} 的 json 資訊通知手機斷線。
沒有留言:
張貼留言