Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/416.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/http/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 通过http将文件从客户端发送到客户端_Javascript_Http - Fatal编程技术网

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

Javascript 通过http将文件从客户端发送到客户端,javascript,http,Javascript,Http,有人知道如何通过http实现从客户端到客户端的文件发送吗。这是一个类似的示例,但找不到如何实现它: 有什么想法吗?您提供的示例也适用于服务器。数据可能直接在接收方的服务器上传输,但仍然通过服务器传输。唯一的优势是,他们不必在服务器上保存千兆字节的数据 如果您对实现感兴趣,请启动Firebug并查看网络选项卡 选择文件后,文件名将发送到服务器,并返回下载的URL: files1 http://files1.jetbytes.com/42621cb32af927558 然后,浏览器实际上每秒轮询服

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

您提供的示例也适用于服务器。数据可能直接在接收方的服务器上传输,但仍然通过服务器传输。唯一的优势是,他们不必在服务器上保存千兆字节的数据

如果您对实现感兴趣,请启动Firebug并查看网络选项卡

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

files1 http://files1.jetbytes.com/42621cb32af927558
然后,浏览器实际上每秒轮询服务器,询问是否有人请求下载。一旦响应从
wait 0
变为
wait 1
,浏览器中的Javascript就会知道已请求下载并将表单与文件一起发布


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

猜测您可以复制他们的行为,大致如下

让我们命名交换的三个部分:发送方(在浏览器中)、服务器(嗯……服务器代码)、接收方(在浏览器中)

  • 发送方界面:用户选择一个文件
  • 发件人:定期(此处每隔一秒)更新服务器,告知发件人已准备好发送文件。当服务器还没有准备好时,它只是向发送者回答“我还没有准备好”
  • 接收方获取生成的URL
  • Sender(与以前一样)更新服务器,表示它已准备好发送文件。这次服务器回答“我准备好了”
  • 发送者只需发布文件(就像在最简单的HTML表单中一样)。
    • 服务器将POST数据中继到接收器(带有相关的报头)
    • 此操作需要时间,因此以下操作仅用于更新进度条发送方
  • 发送方定期(此处每秒)询问服务器到目前为止获得了多少数据;服务器会回答它收到了多少,以及它在结束前期望得到多少
  • 发件人更新其进度条
  • 发送方询问服务器到目前为止获得了多少数据;服务器回答它已完成
  • 交换的三个部分的关闭例程
当然,必须有改进的余地:

  • 定期更新可由另一种技术取代(请参阅)
  • 如果传输在完成之前中断,则可以在传输中断的地方继续传输
  • …许多其他方面

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

javascript和文件?嗯,我不这么认为!:-)对node.js或signer有什么想法吗?不需要额外的库,可用于文件传输。