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
可以是 SHA512
、SHA256
、SHA1
、MD5
或 CRC
) , TIdFTP
有 VerifyFile()
方法来使用它们。它计算本地文件的哈希值,然后将其与服务器为远程文件计算的哈希值进行比较。不需要传输文件数据。
查看 FTP 服务器上损坏的文件 我考虑通过在上传后立即下载并逐字节比较来验证使用 TIdFtp.Put
上传的文件。
我认为 TIdFtp
可能在理论上缓存数据并且 return 从缓存中获取数据而不是实际下载。
请打消或确认我的顾虑。
不,没有缓存,因为 FTP 协议中通常没有缓存。 TIdFTP
仅处理实时数据。
您是否正在以 ASCII 模式上传二进制文件?如果是这样,那将在传输过程中改变换行符(CR 和 LF)。这是一个常见的错误,因为 ASCII 是 FTP 的默认模式。确保在传输文件之前根据需要设置 TIdFTP.TransferType
属性。 ASCII 模式应该只用于文本文件,如果使用的话。
而且 FWIW,您可能不需要下载文件来验证其字节。如果服务器支持任何 X<Hash>
命令(其中 Hash
可以是 SHA512
、SHA256
、SHA1
、MD5
或 CRC
) , TIdFTP
有 VerifyFile()
方法来使用它们。它计算本地文件的哈希值,然后将其与服务器为远程文件计算的哈希值进行比较。不需要传输文件数据。