我正在使用IdFTP(Indy 10)组件从远程位置下载一些文件(zip和txt)。在获取每个文件之前,我将TransferType设置为二进制。
IdFTP.TransferType := ftBinary;
IdFTP.Get(ASource, ADest, AOverwrite);
我希望可以使用二进制模式下载文本文件和二进制文件。但是,正确下载zip文件时,似乎文本文件内容混乱。如果我将文本文件的TransferType设置为ASCII,则它将按预期工作。如何检测给定文件设置的TransferType?有共同的分母或自动设置吗?
最佳答案
我看不到Binary标志如何弄乱传输的文件。二进制类型表示服务器按原样传输文件而未进行任何处理。
FTP服务器应使用ASCII标志的唯一目的是正确处理文本文件中的行尾,通常(1)在Unix中仅换行,或(2)在Windows中为回车+换行。但是如今,大多数文本编辑器在这两种系统中都可以处理。
因此,最安全的方法是仅对非常知名的文本文件使用ASCII标志,可能仅对扩展名为.txt的文件使用,而对所有其他文本文件则使用Binary标志。