Свойства ContentRange...
не используются для HTTP-запросов, только HTTP-ответы. Уберите их из своего кода полностью. Используйте только свойство Range
(которое существует в Indy 10, поэтому убедитесь, что вы не используете Indy 9 или более раннюю версию). Что касается самого свойства Range
, вы неправильно его форматируете. Ему нужен префикс bytes=
, и вы можете опустить конечное значение, чтобы сообщить серверу, что вам нужен остальной файл:
IdHTTP.Request.Range := Format('bytes=%d-',[eFile.Position]);
Если вместо этого вы используете свойство Ranges
, оно обрабатывает эти сведения за вас (свойство Range
устарело):
IdHTTP.Request.Ranges.Add.StartPos := eFile.Position;
Прежде чем отправлять запрос на ранжирование, обязательно проверьте, если Head()
сначала задает для свойства Response.AcceptRanges
значение bytes
, в противном случае Get()
может завершиться ошибкой или отправит вам весь файл независимо от указанного диапазона .