Nodejs – HTTP范围支持/部分文件下载
我正在创build一个音乐networking应用程序,用于存储我在MongoDB(GridFS)中存储的MP3。
我的问题:如何添加HTTP范围支持,以便我可以开始stream式传输1/2audio文件,而无需等待缓冲区。
我知道GridFS支持读取X字节 – X字节,所以基本上我只需要知道如何让nodejs了解它只需要字节X – X.
谢谢!
客户端将发送一个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
(请求范围不可满足),并且字段bytes */*
的Content-Range
字段,或者应该忽略范围请求,并返回200
与整个文件的主体。
服务器还必须发送Accept-Ranges
字段,其中包含接受范围单位的值,在本例中为bytes
。 但范围单位可以是任何你想要的自定义范围单位。
资料来源: rfc2616