0

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

现在的问题是,在启动下载时,downloadmanager 识别出下载是可恢复的(由于“Accept-Range” - 标头),但是在开始恢复下载时它会失败。

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

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

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

亲切的问候

4

1 回答 1

0

我自己解决了这个问题。确实,错误出现在标题中。

我认为 Content-Range 和 Content-Length 应该像这样工作:

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

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

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

(totalbytes 是完整的文件大小,不仅仅是发送的章节)

于 2013-09-27T10:47:57.227 回答