用于恢复未知长度文件的内容范围

cat*_*nor 6 resume http chunked-encoding http-range

我使用现有材料(使用Node)动态创建了未知长度ZIP归档文件,该文件已被压缩。在ZIP存档中,文件仅被存储;ZIP仅用于单个容器。这就是为什么缓存创建的ZIP文件没有任何意义-不涉及任何实际计算。

到目前为止,还可以。现在,我想允许恢复下载,并且正在阅读有关Accept-Range,Range和Content-Range HTTP标头的信息。下载中断的客户会要求开放范围,例如:Range: bytes=8000000-

我该如何回答?根据RFC 2616§14.16,我的答案必须包含一个Content-Range标头,并且在其中:

与byte-ranges-specifier值不同(请参见14.35.1),byte-range-resp-spec必须仅指定一个范围,并且必须包含该范围的第一个字节和最后一个字节的绝对字节位置。

因此,我不能只发送“从位置X开始的所有内容”,我还必须指定发送的最后一个字节-通过仅发送一部分已知大小,或通过预先计算长度。这两种想法都不适合我的情况。还有其他可能性吗?

cat*_*nor 1

回答自己:看起来我必须在(1)对未知长度的文件进行分块编码,或(2)知道其内容长度(或至少当前部分的大小)之间进行选择,从而允许恢复下载(以及进度条)。

我可以接受这一点 - 对于我的每个 ZIP 文件,长度都是相同的,因此我可以将其存储在某个地方并在后续下载中重新使用它。我只是惊讶 HTTP 协议不允许恢复未知长度的下载。