2

我正在使用FTPS连接将文本文件 [此文件将包含 EDI(电子数据交换)信息]发送到邮箱 INOVIS。我已将系统配置为打开 FTPS 连接并使用 PUT 命令将文件写入FTP 服务器上的文件夹。问题是:我应该使用什么文件传输模式?如何在模式之间切换?

此外,通过 FTPS 连接传输文件时使用哪种模式是“最佳实践”。如果有人可以为我提供一个小的 ftp 脚本,那将会很有帮助。

4

7 回答 7

4

这个问题的许多其他答案都是几乎正确到完全错误的信息的集合。

ASCII 模式意味着文件应在线上转换为规范的文本形式。这意味着:

  • NVT-ASCII 字符集。即使原始文件使用其他字符集,例如 ASCII、EBCDIC 或 UTF-8。从技术上讲,这不允许设置第 8 位的字符,但大多数实现不会强制执行此操作。
  • CRLF 行尾。

EBCDIC 模式意味着一组类似的规则,只是线路上的数据应该在 EBCDIC 中。

LOCAL 模式允许发送大小不是每字节 8 位的数据。

IMAGE(或 BINARY)模式意味着数据应该在没有任何更改的情况下发送。用户有责任确保目标系统在数据到达后能够理解数据。

除此之外,这意味着如果所涉及的系统之一不使用基于 ASCII 的字符集,则使用 BINARY 模式发送文本数据的建议将失败。

于 2008-10-24T20:24:21.863 回答
1

ASCII 模式在 unix 和 DOS 格式之间更改换行符。\n 到 \r\n 反之亦然。

于 2008-09-17T09:41:18.010 回答
1

实际上,ASCII/BINARY 与第 8 位无关。这是翻译行尾的惯例。

当您在 Windows 机器上与 Unix FTP 服务器(FTPS 或 FTP - 无关紧要 - 协议相同)通信时,服务器将在存储之前将任何 <CR><LF>-Combination 替换为 <LF>文件,因此如果您从 unix 服务器获取文件,请进行反向翻译。

ASCII 模式背后的想法是将行结尾转换为目标平台的相应结尾。

由于当今世界似乎正在​​趋向于 unix 约定 (<LF>),并且几乎所有当今的编辑器(除了记事本)都可以轻松处理 Unix-Line-Endings,因此 ASCII 模式的日子确实已经屈指可数了,我会无论如何建议始终使用 BINARY 传输模式。

无论如何,在传输过程中更改数据的前景有些令人恐惧。

于 2008-09-17T09:42:41.687 回答
0

ASCII 模式还使最终用户更直接地跨不同平台共享文本文件。他们不必担心默认的行结尾(例如 cr/lf 与仅 lf),因为 ASCII 模式会即时为他们进行翻译。

不过,对于大多数文件类型,您总是希望使用 BINARY 模式。

于 2008-09-17T09:39:05.003 回答
0

ACSII 模式基于服务器和客户端平台(CR/LF 与 LF)在 UNIX 和 Windows 格式之间转换文本文件,而二进制则没有。当然,如果您以 ASCII 模式传输几乎所有非文本的内容,它可能会因此而损坏。

于 2008-09-17T09:42:05.933 回答
-1

如果您想要精确复制数据,请使用二进制模式 - 使用 ascii 模式将假定数据是 7 位文本(字符 0-127)并截断此范围之外的任何数据。可以追溯到神秘的 7 位网络时代,ASCII 模式可以节省您的时间。

在我们生活的全球化环境中——例如外语、货币符号等非 ascii 字符很常见——你应该始终使用 BINARY 模式。

于 2008-09-17T09:37:04.383 回答
-3

对于 FTP 协议,ASCII 传输模式会将每个字符的第 8 位视为无关紧要,并将其用于错误检查。至于二进制传输模式,您的数据将按原样发送。请注意,以 ASCII 模式发送二进制数据(几乎)总是会导致数据损坏。但是,只要发送和接收系统以相同的方式使用第 8 位,以二进制模式传输 ASCII 数据就可以工作(在现代系统中,第 8 位应保持为 0 以防止与扩展的 ASCII 字符集发生冲突)。

于 2008-09-17T09:45:47.750 回答