2012-07-14 191 views
0

是否有任何人知道如何實現文件通過HTTP從客戶端發送到客戶端。這是類似的例子,但無法找到如何實現它:http://jetbytes.com/ 任何想法?從客戶端發送文件到客戶端通過HTTP

+0

javascript和文件?好吧,我不這麼認爲! :-) – helle 2012-07-14 13:15:54

+0

node.js或signalR的任何想法? – Reno 2012-07-14 13:18:45

+0

https://Httprelay.io不需要額外的庫,可用於文件傳輸。 – Jonas 2017-04-24 11:48:32

回答

1

猜你可能只是複製他們的行爲,這是大致有以下幾種。

讓我們命名的交流三個部分組成:發送方(在瀏覽器中),服務器(以及...服務器代碼),接收器(在瀏覽器中)。

  • 發件人UI:用戶選擇一個文件;
  • 發信人:定期(每秒這裏),更新服務器稱發件人是準備發送的文件。雖然服務器還沒有準備好,但它只是向發件人回答「我還沒有準備好」;
  • Receiver獲取生成的URL;
  • 發件人(如前)更新服務器說,它已準備好發送的文件。這次服務器回答「我準備好了」;
  • 發件人只能張貼的文件(因爲它會做最簡單的HTML表單)。
    • 服務器中繼POST數據到接收器(與相關頭);
    • 此操作需要一定的時間,所以下面的操作只是爲了更新進度條發件人的一面。
  • 發件人要求定期(每秒這裏)有多少數據服務器走到這一步;服務器會回覆它收到的數量以及它到期的期望值。
  • 發件人更新其進度欄。
  • ...
  • 發件人要求服務器有多少數據走到這一步;服務器回答完成。
  • 關閉三個交換部分的例程。

當然必須有改進的餘地:

爲了便於實施,大部分工作將在客戶端,並使用jQuery這裏所描述的一切是可以實現的。在服務器上,兩個目標是傳輸數據並回答發件人。你將不得不爲自己定義一個輕量級的協議來說「我沒有準備好」,「我到目前爲止有N個字節」,「我已經完成」。

1

還提供的例子可與一臺服務器。數據可能直接在收件人上傳輸,但仍然通過服務器。唯一的好處是他們不必在他們的服務器上保存千兆字節的數據。

如果您對abot的實施感到好奇,請啓動Firebug並查看Network選項卡。

一旦你選擇了一個文件,文件名被髮送到服務器,返回的下載網址:

files1 http://files1.jetbytes.com/42621cb32af927558 

然後實際調查服務器每秒的瀏覽器,詢問是否有人已請求下載呢。一旦響應從wait 0變爲wait 1,瀏覽器中的Javascript就知道下載已被請求,並將該表單與文件進行POST。

服務器端然後管中的POST數據被直接發送到下載器。關於實現我們只能猜測,但Node.js可能是一個不錯的選擇。

相關問題