`
w1985chun
  • 浏览: 106609 次
  • 性别: Icon_minigender_1
  • 来自: 陕西
社区版块
存档分类
最新评论

FTP中BINARY和ASCII传送模式的区别

 
阅读更多

FTP可用多种格式传输文件,通常由系统决定,大多数Linux/UNIX系统只有两种模式:文本模式和二进制模式。文本传输器使用ASCII字符,并由回车键和换行符分开,而二进制不用转换或格式化就可传字符,二进制模式比文本模式更快,并且可以传输所有ASCII值,所以系统管理员一般将FTP设置成二进制模式。
  一般来说: 如果你用错误的模式传输你的图片,你将可能无法看到图片,看到的会是乱码。 如果你用错误模式上传CGI脚本,那么就将无法运行你的脚本,会看到类似Server 500 Error的出错信息。
  所以你必须使用正确的模式,图片和执行文件必须用BINARY模式,CGI脚本和普通HTML文件用ASCII模式上传。

  ASCII和BINARY模式区别:

  用HTML和文本编写的文件要用ASCII模式上传,用二进制模式上传会破坏文件,导致文件执行出错。
  BINARY模式用来传送可执行文件,压缩文件和图片文件。
  如果你用ASCII模式传,可能会显示一堆乱码,你必须重新用BINARY模式传。
  对于第二种情况,是因为有很多ftp服务器和FTP软件能自动识别文件类型,并采取相应的传输方式。
  FTP是应用层协议,和具体操作系统无关。

  ASCII模式和BINARY模式的区别是回车换行的处理,binary模式不对数据进行任何处理,ASCII模式将回车换行转换为本机的回车字符,比如Unix下是\n,Windows下是\r\n,Mac下是\r
  ascii模式下会转换文件
  不能说是不同系统对回车换行解释不同
  而是不同的系统有不同的行结束符
  unix系统下行结束符是一个字节,即十六进制的0A
  而ms的系统是两个字节,即十六进制的0D0A

  所以当你用ascii方式从unix的ftp server下载文件时(不管是二进制或者文本文件),每检测到一个字节是0A,就会自动插入一个0D,所以如果你的文件是二进制文件比如可执行文件、压缩包什么的,就肯定不能用了。如果你的文件就是unix下的文本文件,你用 ascii模式是正确的,要是误用了binary模式,你在windows上看这个文件是没有换行的,里面是一个个的黑方块。

  一般来说,我们最好都用binary方式,这样可以保证不出错。如果有文本格式转换的问题,即unix格式的文本和dos格式的文本之间的转换,有很多工具可以做的,不要在ftp传输的时候冒险,尤其是你如果对这些东西不是非常清楚的话。
  可以使用MIME,把所有的字符,转换成0~128之间的字符,然后传送,在接受方再将接收到的字符MIME反向转换。通常我们发送邮件,就是使用这样的字符转换方式
  补充:文本模式和二进制模式传文本文件的具体区别可以通过在linux下使用cat -A 文件名看到两者的区别,当然前提是在windows下上传的文本为dos格式,这个可以用高级的文本编辑器看如ultraedit等。两者的区别是二进制模式上传的文本比文本模式多一个^M符号,这个就是windows下dos格式的/r回车符号,也就是上面提到的十六进制的0D,在vi下使用全局替换:%s/^M//g[^M使用Ctrl+V+M而不是直接输入^M]去掉所有的回车符或者使用dos2unix file进行转换,这样保存后或者生成后的文件就和文本模式上传的文件一样了。

分享到:
评论

相关推荐

    空间FTP二进制上传方法

    相比之下,ASCII(文本)模式适用于纯文本文件,FTP客户端会在传输过程中进行必要的字符编码转换,如从UTF-8转换到其他编码,但这可能会对非文本文件造成破坏。 以下是几种常见的FTP软件设置二进制上传的方法: 1....

    FTP命令详解及使用技巧

    1. ascii:这个命令设定以ASCII(文本)方式传送文件,这是默认的传输模式,适用于纯文本文件。 2. bell:每次文件传输完成后,发出声音提示。 3. binary:设定以二进制方式传送文件,适用于所有类型的文件,包括...

    UNIX_系统下FTP的使用.doc

    FTP 传输文件时,支持不同的传输模式,有 ascii 和 binary 模式。在传输可执行文件和数据文件时最好使用 binary 模式。 使用 FTP 需要拥有远端计算机的帐号和密码,才可进行文件传输。FTP 客户端可以使用以下命令:...

    FTP命令集锦.rar

    ASCII切换传输模式为文字模式(只能用来传送DOC文件,因为是7-BIT); BINARY切换传输模式为二进制模式(除文字文件外皆用此模式); IMAGE相当于BINARY: TYPE让你更改或显示目前传输模式。 3)BYE、QUIT

    FTP上传下载

    3. **ASCII和二进制模式**:FTP传输有两种数据类型,ASCII(文本)模式和二进制(binary)模式。文本模式适用于纯文本文件,而二进制模式适用于图片、音频、视频和其他非文本文件。 4. **FTP会话**:FTP操作是在一个...

    ftp文件传输协议(中文)

    - **传输参数命令**:如TYPE、STRU、MODE等,用于指定传输的类型、结构和模式。 - **FTP服务命令**:如LIST、RETR、STOR等,用于查看文件列表、下载和上传文件。 #### 五、命令和响应 FTP使用一系列的命令和响应...

    Linux ftp 远程文件传输.docx

    * ascii:设置文件传输方式为 ASCII 模式,默认情况下,FTP 按 ASCII 模式传输文件 * binary:设置文件传输方式为二进制模式 * close:终止当前的 FTP 会话 * hash:每次传输完数据缓冲区中的数据后就显示一个#号 * ...

    FTP 文件传输

    在Java中实现FTP文件传输,首先需要建立FTP连接,然后登录到FTP服务器,设置传输模式(ASCII或二进制),执行文件操作,最后关闭连接。以下是一个简单的FTP文件上传示例: ```java import org.apache.commons.net....

    linux下FTP命令详解

    Linux 下 FTP 命令详解 FTP(File Transfer Protocol)是用于在网络上...FTP 命令在 Linux 操作系统中提供了丰富的文件传输、目录管理、文件管理和连接管理功能,方便用户在网络上传输文件和管理远程计算机上的文件。

    FTP服务器说明及源码

    FTP有文本传输模式(ASCII模式)和二进制数据传输模式(Binary模式)。文本模式适用于纯文本文件,而二进制模式则适用于任何类型的数据文件,如图片、音频、视频或应用程序。 FTP服务分为普通FTP和匿名FTP。普通FTP...

    linux下FTP、SFTP命令详解.docx

    4. FTP> ascii 将文件传送类型设置为默认的 ASCII。 5. FTP> bell 切换响铃,以在每个文件传送命令完成后响铃。 6. FTP> binary(或 bi)将文件传送类型设置为二进制。 7. FTP> bye(或 by)结束与远程计算机的 ...

    FTP,SFTP,FTPS总结

    在 FTP 协议中,客户端和服务器之间的连接可以分为两种模式:主动模式和被动模式。 主动模式 FTP: 1. 客户端从一个任意的非特权端口 N(N > 1024)连接到 FTP 服务器的命令端口(21 端口) 2. 客户端开始监听端口...

    FTP命令集合

    同时,了解如何设置正确的数据传输模式(`binary`或`ascii`),能避免因格式不匹配造成的文件损坏。 ### 结论 FTP作为一种成熟且广泛使用的文件传输协议,其丰富的命令集为用户提供了一个强大而灵活的工具箱。无论...

    springboot+FTP服务器实现远端文件上传

    服务器端的代码无需做特殊处理,因为FTP协议本身支持二进制文件(如ZIP压缩文件)和ASCII文本文件的传输。 至此,我们已经构建了一个基于Spring Boot的FTP文件上传系统,可以用于将文件(包括压缩文件和文本文件)...

    LINUX FTP设置方法

    - `ascii`:设置文件传输方式为ASCII模式。 - `binary`:设置文件传输方式为二进制模式。 - `close`:终止当前的FTP会话。 - `hash`:每次传输完数据缓冲区中的数据后显示一个`#`号。 - `get(mget)`:从远程机...

    用Java实现FTP服务器解决方案.doc

    FTP支持两种主要的数据传输方式:ASCII模式和二进制模式。ASCII模式主要用于文本文件的传输,而二进制模式则用于图像、声音等非文本文件的传输。 #### 二、常用FTP命令 1. **设置传输模式** - `ASCII`:文本模式。...

    FTP命令大全

    FTP(File Transfer Protocol)是一种用于在网络上进行文件传输的标准协议和服务。它支持用户通过网络从一台计算机向另一台计算机上传送或下载文件。为了更好地使用FTP服务,掌握其内部命令是非常必要的。以下是对...

    tftp命令 上传及下载文件

    tftp是简单的文字模式ftp程序,它所使用的指令和ftp类似。 语法格式:tftp [参数] 常用参数: connect 连接到远程tftp服务器 mode 文件传输模式 put 上传文件 get 下载文件 quit 退出 verbose 显示...

    Linux 上的常用文件传输方式

    -p 试图保留源文件的修改时间和模式,忽略 umask。 -k 请求 rcp 获得在指定区域内的远程主机的 Kerberos 许可,而不是获得由 krb_realmofhost(3)确定的远程主机区域内的远程主机的 Kerberos 许可。 -x 为传送的...

Global site tag (gtag.js) - Google Analytics