我想下载一个 1.2 GB 的文件,但传输总是在 1.08 GB 时失败。是否可以将文件分成两部分下载?

我想下载一个 1.2 GB 的文件,但传输总是在 1.08 GB 时失败。是否可以将文件分成两部分下载?

我可以毫无困难地下载 1.08 GB 的文件,但下载总是在此时失败。我确信这是因为 nginx 在将临时文件发送到客户端之前会将其写入磁盘,而主机的 nginx 代理缓冲区限制为 1.08 GB。

我一直无法继续下载。临时文件会自动删除,下载尝试会在失败时自动从零重新开始,但不可避免地会再次失败。

我尝试过 curl、wget、各种浏览器、JDownloader 和 lftp。但以上方法均无效。

有没有办法从头到尾下载文件的大部分内容,然后再次请求它,只从结尾开始并向开头进行,最终得到两部分可以组合起来重新创建文件?

(主机知道配置问题。他们是一个非常官僚的组织,需要很长时间才能解决这个问题。)

答案1

在 HTTP 中分割传输的唯一方法是使用Range标头。

错误 8 “无效的范围标头”意味着服务器发送了 curl 无法理解的答复(https://curl.se/libcurl/c/libcurl-errors.html

CURLE_WEIRD_SERVER_REPLY (8)

服务器发送的数据 libcurl 无法解析。

因此可能是服务器不支持范围标头,而您运气不佳。

“无效范围标头”也可能意味着您给定的范围无效(例如太大),并且您可以通过传递有效范围来自行修复该问题。

相关内容