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

Qui*_*ike 7 http-headers node.js gridfs

我正在创建一个音乐网络应用程序来流式传输我存储在MongoDB(GridFS)中的MP3.

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

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

谢谢!

fen*_*ent 9

客户端将发送一个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
Run Code Online (Sandbox Code Playgroud)

然后,服务器应返回响应代码206(部分内容),并且Content-Length应该只是传输的数据量.

在范围错误的情况下,服务器应返回416(请求范围不可满足)Content-Range字段bytes */*或应忽略范围请求并返回200文件的整个主体.

Accept-Ranges在这种情况下,服务器还必须发送具有可接受范围单位值的字段bytes.但是范围单位可以是您想要的任何自定义范围单位.

资料来源:rfc2616

  • 我相信客户端应该发送一个`Range`头而不是`Content-Range`.后者由响应中的服务器发送. (7认同)