是否有任何人知道如何實現文件通過HTTP從客戶端發送到客戶端。這是類似的例子,但無法找到如何實現它:http://jetbytes.com/ 任何想法?從客戶端發送文件到客戶端通過HTTP
0
A
回答
1
猜你可能只是複製他們的行爲,這是大致有以下幾種。
讓我們命名的交流三個部分組成:發送方(在瀏覽器中),服務器(以及...服務器代碼),接收器(在瀏覽器中)。
- 發件人UI:用戶選擇一個文件;
- 發信人:定期(每秒這裏),更新服務器稱發件人是準備發送的文件。雖然服務器還沒有準備好,但它只是向發件人回答「我還沒有準備好」;
- Receiver獲取生成的URL;
- 發件人(如前)更新服務器說,它已準備好發送的文件。這次服務器回答「我準備好了」;
- 發件人只能張貼的文件(因爲它會做最簡單的HTML表單)。
- 服務器中繼POST數據到接收器(與相關頭);
- 此操作需要一定的時間,所以下面的操作只是爲了更新進度條發件人的一面。
- 發件人要求定期(每秒這裏)有多少數據服務器走到這一步;服務器會回覆它收到的數量以及它到期的期望值。
- 發件人更新其進度欄。
- ...
- 發件人要求服務器有多少數據走到這一步;服務器回答完成。
- 關閉三個交換部分的例程。
當然必須有改進的餘地:
- 定期更新可以通過另一種技術(見http://en.wikipedia.org/wiki/Push_technology)來代替;
- 如果傳輸在完成之前中斷,可以繼續傳輸中斷的地方;
- ...等諸多方面
爲了便於實施,大部分工作將在客戶端,並使用jQuery這裏所描述的一切是可以實現的。在服務器上,兩個目標是傳輸數據並回答發件人。你將不得不爲自己定義一個輕量級的協議來說「我沒有準備好」,「我到目前爲止有N個字節」,「我已經完成」。
1
還提供的例子可與一臺服務器。數據可能直接在收件人上傳輸,但仍然通過服務器。唯一的好處是他們不必在他們的服務器上保存千兆字節的數據。
如果您對abot的實施感到好奇,請啓動Firebug並查看Network選項卡。
一旦你選擇了一個文件,文件名被髮送到服務器,返回的下載網址:
files1 http://files1.jetbytes.com/42621cb32af927558
然後實際調查服務器每秒的瀏覽器,詢問是否有人已請求下載呢。一旦響應從wait 0
變爲wait 1
,瀏覽器中的Javascript就知道下載已被請求,並將該表單與文件進行POST。
服務器端然後管中的POST數據被直接發送到下載器。關於實現我們只能猜測,但Node.js可能是一個不錯的選擇。
相關問題
- 1. 通過http post發送數據從客戶端到服務器
- 2. 客戶端通常發送http頭
- 3. 通過WCF從客戶端1到客戶端2的通知
- 4. 發送通知客戶端
- 5. 從Google Drive下載文件並通過Google Drive python客戶端將文件作爲HttpResponse發送到客戶端
- 6. 噴發送xls文件到客戶端
- 7. 將Excel文件發送到客戶端
- 8. 將XML文件發送到客戶端
- 9. Node.js發送文件到客戶端
- 10. ASP C#發送文件到客戶端
- 11. 當發送到客戶端
- 12. 通過Axis RPC客戶端發送CDATA
- 13. .NET SMTP客戶端 - 客戶端無權發送此發件人
- 14. 通過客戶端
- 15. 如何通過在客戶端運行ant腳本將文件從服務器發送到客戶端
- 16. 解析遷移 - 客戶端到客戶端推送通知
- 17. 使用STUN發送UDP到客戶端後面的客戶端
- 18. Python xmpppy客戶端不發送消息到appengine xmpp客戶端
- 19. C#Tcpclient客戶端發送消息到另一個客戶端
- 20. Winsock + C +客戶端到客戶端+發送和接收數據
- 21. Swift Http客戶端不發送請求
- 22. Grails:編輯(form:multipart)文件(從客戶端)並將其發送回客戶端
- 23. 從服務器發送到客戶端
- 24. 從客戶端發送電子郵件
- 25. 從客戶端發送電子郵件
- 26. akka-http。生成文件併發送到客戶端
- 27. Nginx和Tornado:發送大文件到http客戶端
- 28. WCF將事件發送到客戶端
- 29. 的NodeJS:客戶端到客戶端通過服務器
- 30. wso2esb 5.0 - 從WSO2發送消息到客戶端通過WebSocket
javascript和文件?好吧,我不這麼認爲! :-) – helle 2012-07-14 13:15:54
node.js或signalR的任何想法? – Reno 2012-07-14 13:18:45
https://Httprelay.io不需要額外的庫,可用於文件傳輸。 – Jonas 2017-04-24 11:48:32