无法恢复可恢复下载


Resumeable Download can't be resumed

我想使用 PHP 恢复下载文件。正如这篇文章所述,我需要有一定的工作流程来做到这一点,所以我添加了它。

现在的问题是,在启动下载时,下载管理器会识别下载是可恢复的(由于"接受范围" - 标头),但是当开始恢复下载时,它会失败。

我现在调试了正在发送的标头的输出,但我找不到它不起作用的原因。可能我现在的看法不好,或者错误在其他地方,但我想它隐藏在这里。

Request: bytes=2967529-
Header: HTTP/1.1 206 Partial Content
Header: content-type: application/x-rar-compressed
Header: Content-Type: application/octet-stream
Header: Cache-Control: private
Header: Accept-Ranges: bytes
Header: Content-Range: bytes 2967529-/52702041
Header: content-length: 52702041
Header: content-disposition: attachment; filename="XXX.rar"

另一次尝试更改了一些标头,但仍然不起作用:

Header: Content-Range: bytes 2967529-55669570/*
Header: content-length: 52702041

内容长度(以及范围中的最后一个整数)是已扣除偏移量的文件大小。

亲切问候

我自己解决了这个问题。事实上,错误出在标题内部。

我认为内容范围和内容长度应该像这样工作:

Content-Range: bytes startbytes-totalbytes/bytestobesend
Content-Length: bytestobesent

实际上,它的工作原理是这样的:

Content-Range: bytes startbytes-totalbytes/totalbytes
Content-Length: totalbytes

(其中总字节数是完整的文件大小,而不仅仅是发送的章节)