Кэширование Indy FTP-клиента? - PullRequest
0 голосов
/ 24 ноября 2018

Глядя на поврежденные файлы на FTP-сервере, я думаю о проверке файлов, загруженных с TIdFtp.Put, путем их загрузки сразу после загрузки и сравнения байтов.

Я думаю, что TIdFtp теоретически может кэшировать данныеи вернуть его из кеша вместо фактической загрузки.

Пожалуйста, разрешите или подтвердите мои опасения.

1 Ответ

0 голосов
/ 24 ноября 2018

Нет, кэширование отсутствует, так как в общем случае в протоколе FTP такого нет.TIdFTP имеет дело только с живыми данными.

Возможно, вы загружаете двоичные файлы в режиме ASCII?Если так, это изменило бы символы разрыва строки (CR и LF) во время передачи.Это распространенная ошибка, поскольку ASCII является режимом FTP по умолчанию.Убедитесь, что вы устанавливаете свойство TIdFTP.TransferType по мере необходимости, прежде чем передавать файл.Режим ASCII следует использовать только для текстовых файлов, если он вообще используется.

И FWIW, вам может не понадобиться загружать файл для проверки его байтов.Если сервер поддерживает какие-либо команды X<Hash> (где Hash может быть SHA512, SHA256, SHA1, MD5 или CRC), TIdFTP имеет методы VerifyFile() для их использования.Это вычисляет хэш локального файла, а затем сравнивает его с хешем, вычисленным сервером для удаленного файла.Передача файловых данных не требуется.

...