Delphi. FTP. Indy. Как добавить верификацию загрузки файла на серверe?

Как узнать – полностью ли загрузился файл на FTP сервер? Идентичны ли файлы на клиенте и сервер? Можно написать свой алгоритм, проверяющий по тем или иным параметрам идентичность файлов, но в Indy уже всё готово и можно этим только пользоваться.

34

В Indy есть встроенный метод проверки верификации загрузки файла по FTP.

Вот что написано в документации

Internally, VerifyFile uses an instance of TIdHashMessageDigest5, TIdHashSHA1, or TIdHashCRC32 to calculate the checksum value for the contents of the local file using the ALocalFile argument.

AStartPoint indicates the initial position in the files to use when calculating the checksum values. When AStartPoint contains 0 (zero) or a positive Integer value, the stream in ALocalFile is positioned to to that location prior to starting the checksum calculation.

AByteCount indicates the number of bytes to include when performing the checksum calculation. The default value is 0, and indicates that the byte count should be derived from the size of the stream for the local file and the initial position indicated in AStartPoint.

VerifyFile calls an overloaded variant of the method to build and send an FTP command using an algorithm name and arguments as required for the operation. The checksum value from the remote FTP server is captured and compared to the value calculated for the local file. VerifyFile returns True when the local checksum and the remote checksum values are the same. VerifyFile returns False when the checksum values are not the same, or when the capability is not supported on the remote FTP server.

Use SupportsVerification to determine if the FTP server support the extensibility feature.

Как я применил это в своём примере?

Первый и второй аргументы это пути до файла на клиенте и сервере соответственно

Полностью, в процедуре Execute потока это выглядит вот так…

Процедура, которая помечает проверен ли файл

 

 

 

This entry was posted in Delphi. Bookmark the permalink.