-
Vasilich71 (20.06.14 17:29) [0]Добрый день.
Есть программа она выкасивает себе данные с FTP сервера.
Решил добавить поддержку докачки.
Вот строчки было и стало.
// без докачки
IdFTP1.Get(RemoteList.Strings[i], LocalList.Strings[i], True, False);
// с докачкой
IdFTP1.Get(RemoteList.Strings[i], LocalList.Strings[i], False, True);
При обрыве соединения всё происходит как будто докачивается, но файл при этом становится битым.
Что делать? -
Дмитрий Белькевич (27.06.14 23:29) [1]Смотреть, как именно побилось. Насколько я знаю, программы докачивают с небольшим 'зазором'.
-
Vasilich71 (01.07.14 18:11) [2]Разбирал, действительно качает не с того места где оборвалось.
Если отстрелить пользователя от FTP то всё нормально докачивает. А если имитировать обрыв связи, против чего и боролся, то пишет не с того смещения.
1 качам файл.
2 выдергиваем кабель из сетевой карты.
3 смотрим на размер того, что закачалось. К примеру 123456.
4 включаем всё на место.
5 подаём команду Get...
6 на FTP приходит команда REST 123456
7 докачивается файл. Всё хорошо. Как бы. файло битое.
Проблема в том, что управлять этим я не могу. Сказал бы "GET начиная с 123000" и оно бы скачало правильно. Так никак-же. -
Дмитрий Белькевич (27.07.14 00:30) [3]Правь инди:
if AResume then begin
Self.SendCmd('REST ' + IntToStr(ASource.Position), [350]); {do not localize}