2016-08-09 2 views
0

У меня возникли проблемы с libcurl. Проблема, которую я вижу, когда пытаюсь возобновить загрузку файла, который уже был загружен. Но в некоторых случаях я не знаю, была ли она загружена или нет, поэтому мы пытаемся перезагрузить с продолжением, что не удается с HTTP 416 - сервер не поддерживает байтовые диапазоны.Командная строка cURL или lib - возобновление загрузки файла - IIS

Это определенно неверно, так как разъезд может продолжаться в любой точке до загрузки файла.

Есть ли способ, которым libcurl знал бы, что файл уже загружен и не дает этой ошибочной ошибки?

Или может я как-нибудь иначе chec, если он будет загружен полностью?

~ # ./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

Спасибо!

ответ

2

Да, Libcurl может сделать ГОЛОВЫ запрос первой, чтобы выяснить, что общий размер перед тем он запрашивает запрос диапазона, поэтому было бы видеть, что у него уже есть все данные, загруженные и пропустить следующий запрос.

Это, конечно же, добавит забавное состояние гонки, которое сделает файл, который растет на сервере, легко ложно вызывает такие ошибки «нет необходимости возобновлять».

В вашем случае вы, вероятно, можете обойти свою проблему, вручную добавив такой запрос HEAD перед попыткой возобновления.

+0

Возможно, было бы лучше всего настроить с помощью IIS, чтобы вернуть длину содержимого в 416, который уведомит завиток, что загрузка infact завершена. В противном случае немного бесполезно продолжать ... Или если curl сделает это только на 416 – Lonko

+0

Правильно, завиток может сделать это для случая 416, но я не уверен, насколько уверенным может быть то, что причина в том, что именно это все уже загружено ... Я открыт для патчей для тех, кто хочет работать над этим! –

Смежные вопросы