我可以毫无困难地下载 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 无法解析。
因此可能是服务器不支持范围标头,而您运气不佳。
“无效范围标头”也可能意味着您给定的范围无效(例如太大),并且您可以通过传递有效范围来自行修复该问题。