在FTP服务器上查看损坏的文件,我想通过在上传后立即下载文件并逐字节比较来验证通过TIdFtp.Put
上传的文件。
我认为TIdFtp
从理论上讲可以缓存数据,然后从缓存中返回而不是实际下载。
请缓解或确认我的担忧。
答案 0 :(得分:2)
不,没有缓存,因为在FTP协议中通常没有这样的东西。 TIdFTP
仅处理实时数据。
也许是在以ASCII模式上传二进制文件吗?如果是这样,那将在传输期间更改换行符(CR和LF)。这是一个常见的错误,因为ASCII是FTP的默认模式。在传输文件之前,请确保根据需要设置TIdFTP.TransferType
属性。如果完全使用ASCII模式,则只能用于文本文件。
FWIW,您可能不需要下载文件来验证其字节。如果服务器支持任何X<Hash>
命令(其中Hash
可以是SHA512
,SHA256
,SHA1
,MD5
或CRC
),TIdFTP
有VerifyFile()
种方法可以使用它们。这将计算本地文件的哈希,然后将其与服务器为远程文件计算的哈希进行比较。无需传输文件数据。