【问题标题】:Is Indy FTP client caching?Indy FTP 客户端是否缓存?
【发布时间】:2019-04-26 17:35:57
【问题描述】:

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

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

请减轻或确认我的疑虑。

【问题讨论】:

  • 我不这么认为。这个假设基于什么?

标签: delphi caching ftp indy


【解决方案1】:

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

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

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

【讨论】:

  • 感谢您的回答。 Indy 或设置数据没有任何问题。默认情况下,客户的 Internet 连接非常昂贵、缓慢且不稳定,我不得不忍受它。我以二进制模式发送所有文件,甚至是基于文本的文件。我必须使用任何 FTP 服务器。这次是Pure-FTPd。并非所有文件都已损坏,但只有 1000...2000 个中的 5...7 个。 XML 中间有跳过和不可打印的字符。我将尝试验证文件()。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-02-16
  • 1970-01-01
  • 2015-11-04
  • 2017-03-18
  • 2012-07-26
  • 2019-04-24
  • 1970-01-01
相关资源
最近更新 更多