找回密码
 注册

PHP FTP ASCII BINARY的区别

php 发表于 2017/12/8 12:28 | 显示全部楼层 |阅读模式
FTP ASCII和BINARY两种模式传输文件的区别在于BINARY模式上传文件到FTP服务器或者从FTP服务器下载文件以后文件内容不会被修改,如果使用了ASCII模式,从将文件上传到FTP服务器或者从FTP服务器下载文件以后,有可能文件尺寸已经和原始文件不一样了,有时候将一个压缩文件上传到FTP server再从FTP server将文件下载到本地电脑却发现压缩包出现错误打不开。

这一切都是有原因的,因为不同的操作系统使用的换行符不相同,Windows的换行符是\r\n,UNIX的换行符是\n,MAC OS换行符是\r。\n就是回车,英文叫carriage return,简称CR;\r叫换行,英文名line feed,简称LF。由不同的操作系统创建的文件,换到其他操作系统有可能出现没有换行或者出现一些奇怪的字符,有可能就是因为换行符不同导致的。

FTP ASCII模式的作用就是在文件上传和下载过程中,自动将被上传或者被下载的文件中的换行符转成目标计算机所使用的换行符,保证在目标计算机上可以正常阅读,设计这个功能主要针对文本类文件,方便跨操作系统查看。具体地说,如果从Windows上传文件到UNIX,那么,被上传文件中的所有\r\n会自动被转成\n,如果从UNIX下载文件到Windows,被下载的文件中的所有\n都会自动被转成\r\n,其他操作系统之间同理。

如果使用FTP BINARY模式,无论是上传还是下载,无论是什么操作系统,只要成功完成了文件传输,传输的内容始终保持不变。

如果传输的文件是文本文件,可以使用ASCII模式,如果不是文本文件,最好使用BINARY模式传输。

具体到PHP,ftp_put() ftp_fput() ftp_get() ftp_fget() ftp_nb_put() ftp_nb_fput() ftp_nb_get() ftp_nb_fget()等函数都可以使用FTP_ASCII或者FTP_BINARY来指定传输模式PHP FTP_ASCII和FTP_BINARY为二选一且为必选参数,PHP的FTP扩展并没有设置默认的模式。

手机版|轻松E站

轻松E站

快速回复 返回顶部 返回列表