cURL命令行或lib - 文件下载的简历 - IIS

时间:2016-08-09 07:19:45

标签: shell curl libcurl

我在使用libcurl时遇到了一些麻烦。当我尝试恢复已经下载的文件的下载时,我看到的问题。但在某些情况下,我不知道它是否已下载,因此我们尝试使用continue重新下载,这与HTTP 416失败 - 服务器不支持字节范围。

这绝对不是真的,因为服务器可以在任何时候继续,直到文件被下载。

有没有一种方法可以让libcurl知道文件已经下载并且没有给出这种误导性的错误?

或者我可以以某种方式解决,如果它是完全下载?



~ # ./curl -L -O -C - http://speedtest.ftp.otenet.gr/files/test10Mb.db
sk_sort:0xb6f4eae4
** Resuming transfer from byte position 10485760
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0
curl: (33) HTTP server doesn't seem to support byte ranges. Cannot resume.

~ # ls -ltr test10Mb.db
-rw-r--r--    1 root     root      10485760 Aug  9 09:13 test10Mb.db




谢谢!

1 个答案:

答案 0 :(得分:2)

是的,libcurl 它会看到它已经下载了所有数据并跳过下一个请求。

这当然会增加一个有趣的竞争条件,使得在服务器端增长的文件很容易错误地触发这种“无需恢复”的错误。

在您的情况下,您可以通过在恢复尝试之前手动添加此类HEAD请求来解决您的问题。