Indy FTP 客户端缓存了吗?

Is Indy FTP client caching?

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

我认为 TIdFtp 可能在理论上缓存数据并且 return 从缓存中获取数据而不是实际下载。

请打消或确认我的顾虑。

不,没有缓存,因为 FTP 协议中通常没有缓存。 TIdFTP 仅处理实时数据。

您是否正在以 ASCII 模式上传二进制文件?如果是这样,那将在传输过程中改变换行符(CR 和 LF)。这是一个常见的错误,因为 ASCII 是 FTP 的默认模式。确保在传输文件之前根据需要设置 TIdFTP.TransferType 属性。 ASCII 模式应该只用于文本文件,如果使用的话。

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