Indy FTP客户端缓存吗?

时间:2018-11-24 12:08:21

标签: delphi caching ftp indy

在FTP服务器上查看损坏的文件,我想通过在上传后立即下载文件并逐字节比较来验证通过TIdFtp.Put上传的文件。

我认为TIdFtp从理论上讲可以缓存数据,然后从缓存中返回而不是实际下载。

请缓解或确认我的担忧。

1 个答案:

答案 0 :(得分:2)

不,没有缓存,因为在FTP协议中通常没有这样的东西。 TIdFTP仅处理实时数据。

也许是在以ASCII模式上传二进制文件吗?如果是这样,那将在传输期间更改换行符(CR和LF)。这是一个常见的错误,因为ASCII是FTP的默认模式。在传输文件之前,请确保根据需要设置TIdFTP.TransferType属性。如果完全使用ASCII模式,则只能用于文本文件。

FWIW,您可能不需要下载文件来验证其字节。如果服务器支持任何X<Hash>命令(其中Hash可以是SHA512SHA256SHA1MD5CRC ),TIdFTPVerifyFile()种方法可以使用它们。这将计算本地文件的哈希,然后将其与服务器为远程文件计算的哈希进行比较。无需传输文件数据。