代码之家  ›  专栏  ›  技术社区  ›  Tihauan

Indy FTP传输类型

  •  2
  • Tihauan  · 技术社区  · 16 年前

    我正在使用idftp(indy 10)组件从远程位置下载一些文件(zip和txt)。在获取每个文件之前,我将transferType设置为binary。

    IdFTP.TransferType := ftBinary;
    IdFTP.Get(ASource, ADest, AOverwrite);
    

    我希望文本和二进制文件都可以使用二进制模式下载。但是,在正确下载zip文件时,文本文件的内容看起来很混乱。如果我将文本文件的transferType设置为ascii,它将按预期工作。如何检测要为给定文件设置的TransferType?是否有共同的分母或自动设置?

    3 回复  |  直到 16 年前
        1
  •  6
  •   PA.    16 年前

    我不明白二进制标志是如何把传输的文件弄乱的。二进制类型意味着服务器不需要任何处理就可以传输文件。

    ftp服务器唯一应该使用ascii标志的地方是正确处理文本文件中的行尾,通常(1)在Unix中只处理换行,或者(2)在Windows中使用回车+换行。但是现在大多数文本编辑器都在这两个系统中处理这两个问题。

    因此,最安全的是对非常有名的文本文件只使用ASCII标志,可能只使用扩展名为.txt的文件,对所有其他文件使用二进制标志。

        2
  •  3
  •   robsoft    16 年前

    当有疑问时,排除它!!)-尝试使用Windows命令行ftp程序从服务器传输文件,并查看文本文件是否仍然出现错误。程序将传输二进制(命令bin)或文本(命令ascii)。如果您使用它传输文件,但它们的到达方式仍然与您的预期不同,那么服务器端*正在做一些事情。如果他们来的很好,那么要么你(或印地)正在做什么。-)

    *文本文件是怎么搞砸的?如果要传输Unicode文本文件,最好还是将其作为二进制文件传输。我必须承认,正如@unknown(yahoo)所说,在大多数情况下,你应该坚持bin模式。

        3
  •  0
  •   DwrCymru    16 年前

    我想这也取决于你如何查看文本文件,ansi或widechar,以及文本是否混乱。