FTP загружает поврежденный файл в Delphi, используя IdFTP - PullRequest
0 голосов
/ 25 марта 2020

Я использую IdFTP для загрузки файла .exe или .zip с FTP-сервера. Файл загружается и приходит на мой компьютер с FTP, проблема в том, что .exe повреждается во время передачи, и я не могу открыть его внутри своего компьютера.

Вот код .

  IdFTP1.Connect;
  IdFTP1.Get(EdtRemoteFile.Text,EdtDirectory.Text + '\' + EdtRemoteFile.Text, True, true);

Ответы [ 2 ]

5 голосов
/ 25 марта 2020

Протокол FTP по умолчанию работает в текстовом режиме ASCII. В этом режиме разрывы строк нормализуются во время передачи, что приведет к повреждению двоичных файлов (и это также может потенциально повредить текстовые файлы не в формате ASCII, например, UTF-8). Таким образом, вам нужно переключиться в режим IMAGE (двоичный) при передаче нетекстовых файлов, например:

uses
  ..., IdFTPCommon; 

IdFTP1.Connect;
IdFTP1.TransferType := ftBinary; // <-- ADD THIS
IdFTP1.Get(EdtRemoteFile.Text,EdtDirectory.Text + '\' + EdtRemoteFile.Text, True, true);
0 голосов
/ 25 марта 2020

A .txt файл будет работать, проблема с .exe и .zip файлами. Вам нужно добавить эту строку в ваш код:

uses
  ..., IdFTPCommon;

IdFTP1.TransferType := ftBinary;

Не забудьте импортировать IdFTPCommon, иначе вы не сможете использовать ftBinary.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...