我正在使用 IdFTP (Indy 10) 组件从远程位置下载一些文件(zip 和 txt)。在获取每个文件之前,我将 TransferType 设置为二进制。
IdFTP.TransferType := ftBinary;
IdFTP.Get(ASource, ADest, AOverwrite);
我希望可以使用二进制模式下载文本和二进制文件。然而,看起来文本文件内容混乱,而 zip 文件下载正确。如果我将文本文件的 TransferType 设置为 ASCII,它会按预期工作。如何检测为给定文件设置哪种传输类型?有共同点或自动设置吗?
我不明白二进制标志如何弄乱传输的文件。二进制类型意味着服务器按原样传输文件而不进行任何处理。
FTP 服务器应该使用 ASCII 标志的唯一目的是正确处理文本文件中的行尾,通常 (1) Unix 中仅换行或 (2) Windows 中回车 + 换行。但现在大多数文本编辑器都可以在任一系统中处理这两种情况。
因此,最安全的方法是仅对众所周知的文本文件(可能仅具有 .txt 扩展名的文件)使用 ASCII 标志,并对所有其他文件使用二进制标志。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)