FTP (文件传输协议)

# 简介 FTP(File Transfer Protocol,文件传输协议) 是 TCP/IP 协议组中的协议之一。FTP协议包括两个组成部分,其一为FTP服务器,其二为FTP客户端。其中FTP服务器用来存储文件,用户可以使用FTP客户端通过FTP协议访问位于FTP服务器上的资源。在开发网站的时候,通常利用FTP协议把网页或程序传到Web服务器上。此外,由于FTP传输效率非常高,在网络上传输大的文件时,一般也采用该协议。 默认情况下FTP协议使用TCP端口中的 20和21这两个端口,其中20用于传输数据,21用于传输控制信息。但是,是否使用20作为传输数据的端口与FTP使用的传输模式有关,如果采用主动模式,那么数据传输端口就是20;如果采用被动模式,则具体最终使用哪个端口要服务器端和客户端协商决定。 --- ## API说明 ftp的API在LuatOS-Air lib有做封装,建议直接用lib的API接口。 |API接口| 描述| | --- | --- | | ftp.close()|FTP客户端关闭| | ftp.command()| FTP客户端命令| | ftp.pasv_connect()| 连接到PASV接口| | ftp.login()| FTP客户端登录| | ftp.upload()| FTP客户端文件上传| | ftp.download()| FTP客户端文件下载| | ftp.checktype()| 设置FTP传输类型 A:ascii I:Binary| | ftp.pwd()| 显示当前工作目录| | ftp.cwd()| 更改工作目录| | ftp.cdup()| 回到上级目录| | ftp.mkd()| 创建目录| | ftp.list()| 列出目录列表或文件信息| | ftp.deletefolder()| 删除目录| | ftp.deletefile()| 删除文件| >详细的API介绍见 [FTP API章节](https://doc.openluat.com/wiki/21?wiki_page_id=2300"FTPAPI说明") ## 实现流程 - 登录ftp服务器 - 等待登录成功 - 执行自己的命令(根据API执行,也可使用ftp.command()执行其他ftp命令) ![image.png](https://cdn.openluat-luatcommunity.openluat.com/images/20210331100530752_image.png) # 常见问题 ## 关于不支持主动模式: 模块ftp默认是被动模式,不支持主动模式,无法设置主动模式,公网下要想模块正常连接服务器,服务器肯定不能设置为主动模式,否则哪家模块都不能用。 ## 发送带0x0d 0x0a这些数据会丢失 需要通过ftp.checktype("I",0)设置为二进制方式传输文件,否则传输过程中会丢弃换行符