首页 > 解决方案 > Indy FTP 客户端是否缓存?

问题描述

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

我认为这TIdFtp可能是理论上缓存数据并从缓存中返回而不是实际下载。

请减轻或确认我的担忧。

标签: delphicachingftpindy

解决方案


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

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

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


推荐阅读