通过http将文件从客户端发送到客户端

时间:2012-07-14 13:14:02

标签: javascript http

是否有人知道如何通过http从客户端到客户端实现文件发送。这是类似的示例,但无法找到如何实现它:http://jetbytes.com/ 有什么想法吗?

2 个答案:

答案 0 :(得分:1)

您提供的示例也适用于服务器。数据可能直接在收件人上流式传输,但仍然通过服务器。唯一的好处是他们不必在他们的服务器上保留数GB的数据。

如果您对实施感到好奇,请启动Firebug并查看网络标签。

选择文件后,文件名将发送到服务器,并返回下载URL:

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

然后浏览器实际上每秒轮询服务器,询问是否有人请求下载。一旦响应从wait 0变为wait 1,浏览器中的Javascript就会知道已经请求下载,并使用该文件对表单进行POST。

服务器端然后管道POST数据以直接发送到下载器。关于实现我们只能猜测,但Node.js可能是一个不错的选择。

答案 1 :(得分:1)

猜猜你可以复制他们的行为,大致如下。

让我们将交换的三个部分命名为:Sender(在浏览器中),Server(以及......服务器代码),Receiver(在浏览器中)。

  • 发件人UI:用户选择文件;
  • 发件人:定期(此处每秒),更新服务器,说发件人已准备好发送文件。虽然服务器还没有准备好,但它只是向发件人回答“我还没准备好”;
  • Receiver获取生成的URL;
  • 发件人(如前所述)更新服务器,表示已准备好发送文件。这次服务器回答“我准备好了”;
  • 发件人只需POST文件(就像在最简单的HTML表单中一样)。
    • 服务器将POST数据中继到Receiver(带有相关标头);
    • 此操作需要时间,因此以下操作仅用于更新发件人方的进度条。
  • 发件人定期询问(此处每秒一次)到目前为止服务器获得了多少数据;服务器回答了它收到了多少以及它在结束前的预期程度。
  • 发件人更新其进度条。
  • ...
  • Sender询问Server到目前为止有多少数据;服务器回答它已完成。
  • 在交易所的三个部分关闭例程。

当然,还有改进的余地:

对于实现,大部分工作将在客户端进行,这里描述的所有内容都可以使用jQuery实现。在服务器上,两个目标是传输数据并回答发件人。你必须自己定义一个轻量级协议,说“我准备好了”,“到目前为止我有N个字节”,“我已经完成了”。

相关问题