Для свойства Binary
установлено значение True, но вы фактически не переводите сеанс FTP в двоичный режим на стороне сервера, поэтому файлы передаются в режиме ASCII (режим протокола FTP по умолчанию), что приводит к повреждению двоичных файлов..
После установки свойства Binary
вам необходимо вызвать метод TypeSet()
(или вы можете использовать метод TypeBinary()
или TypeAscii()
), чтобы сообщить серверу FTP, какой режим использовать,перед тем, как выполнять переводы в этом режиме:
FTP.Binary := ...;
...
if not FTP.TypeSet then
raise Exception.Create('Failed to set transfer type: ' + FTP.ErrorMessage);
Это указано в документации ICS:
http://wiki.overbyte.eu/wiki/index.php/TFtpClient.Binary
Свойство, используемое для установкиФайлы передаются в двоичном или ASCII-режиме.Binary
не действует до тех пор, пока TypeSet
или TypeSetAsync
не будут успешно вызваны.
TypeSetBinary
, TypeSetBinaryAsync
, TypeSetAscii
и TypeAsciiAsync
могут выполнить этишаги в один звонок.