由于网络的不稳定,或程序的中断,或者客户FTP的不确定性,上传B2B资料到客户FTP时,可能会出现文件上传错误(不全/丢失等)问题。
故希望在上传后检查正确性。
我们使用FluentFTP进行FTP传输。
如何验证文件的哈希值/校验和,如果校验和不匹配,如何重试?
将FtpVerify选项设置添加到UploadFile()或DownloadFile()以启用自动校验和验证。
//上传文件的时候重新尝试设置为3次
client.RetryAttempts = 3;
//上传一个文件,在放弃之前或尝试重传3次
client.UploadFile(@"C:\test.txt", "/test.txt", FtpExists.Overwrite, false, FtpVerify.Retry);
所有可能的配置:
- FtpVerify.OnlyChecksum - 验证校验和,根据成功返回真/假。
- FtpVerify.Delete - 验证校验和,如果不匹配就删除目标文件。
- FtpVerify.Retry - 验证校验和,重试复制X次,然后放弃。
- FtpVerify.Retry | FtpVerify.Throw - 验证校验和,重试复制X次,如果仍然不匹配则抛出错误。
- FtpVerify.Retry | FtpVerifyDelete - 验证校验和,重试复制X次,如果仍然不匹配就删除目标文件。
- FtpVerify.Retry | FtpVerifyDelete | FtpVerify.Throw - 验证校验和,重试复制X次,如果仍然不匹配就删除目标文件,然后抛出一个错误
大坑注意:
当使用“FtpVerify.OnlyChecksum”时,当Remote文件路径中含空格时,会报错:OnlyChecksum;慎用!(有可能仅我使用的版本问题,不知道后续这个bug是否已经修复了)