2012-07-14 190 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可能是一个不错的选择。

相关问题