共享大文件

时间:2014-11-06 16:38:05

标签: javascript node.js file-io socket.io

我必须使用node.js开发一个文件共享系统,我不知道如何在用户之间发送大文件。

现在我有一个简单的node.js + express + socket.io服务器,可以检测连接并允许用户通过以下方式交换小文件:

socket.emit('file', selectedFile);

其中selectedFile是来自常规File的{​​{1}}个对象

正如我所说,这适用于小文件,但我不确定应该如何实现适用于较大文件的内容。现在,当我尝试发送更大的内容时,发送文件的用户将断开连接。任何提示?

1 个答案:

答案 0 :(得分:0)

这是我怎么做的

客户端

  1. 以流
  2. 打开文件
  3. 创建特定大小的块(例如10kb)
  4. 将索引附加到每个块并发送到服务器
  5. 记录来自服务器的每个索引的确认
  6. 如果连接断开,只需从上次确认的索引
  7. 开始重新发送文件块
  8. 重复直到文件完全流式传输
  9. 服务器端

    1. 从客户端
    2. 接收块
    3. 将块存储在临时文件中
    4. 向客户发送收据确认
    5. 收到所有块后,按正确顺序组装并转换为适当的编码方案