Nodejs - HTTP范围支持/部分文件下载

时间:2012-01-02 00:26:44

标签: node.js http-headers gridfs

我正在创建一个音乐网络应用程序,用于传输我存储在MongoDB(GridFS)中的MP3。

我的问题:我如何添加http范围支持,以便我可以开始流式传输音频文件,而无需等待缓冲区。

我知道GridFS支持读取X字节--X字节,所以基本上我只需要知道如何让nodejs理解它只需要X - X字节。

谢谢!

1 个答案:

答案 0 :(得分:8)

客户端将发送一个Range标头,指定绝对的起始和结束字节,后跟总文件长度或'*'。

示例:

  . The first 500 bytes:
   bytes 0-499/1234

  . The second 500 bytes:
   bytes 500-999/1234

  . All except for the first 500 bytes:
   bytes 500-1233/1234

  . The last 500 bytes:
   bytes 734-1233/1234

然后,服务器应返回响应代码206(部分内容),Content-Length应仅为传输的数据量。

如果范围错误,服务器应返回416(请求范围不可满足)且Content-Range字段为bytes */*,或者应忽略范围请求并返回200与文件的整个正文。

服务器还必须发送Accept-Ranges字段,其中包含可接受范围单位的值,在本例中为bytes。但是范围单位可以是您想要的任何自定义范围单位。

来源:rfc2616