3.1.4 FTP/FTPS

FTP

作者:闫国梁

最后更新时间:2020年7月3日

概述:目前FTP只有AT方式支持,LUAT暂不支持。

AT指令说明

设置 FTP 控制端口:AT+FTPPORT

语法规则:

命令类型

语法

返回

说明

设置命令

AT+FTPPORT=

OK

正常返回

ERROR

输入格式有误

查询命令

AT+FTPPORT?

+FTPPORT: OK

测试命令

AT+FTPPORT=?

OK

参数定义:

参数

定义

取值

对取值的说明

FTP 控制端口号

1~65535

缺省值为 21

设置 FTP 主动或被动模式:AT+FTPMODE

语法规则:

命令类型

语法

返回

说明

设置命令

AT+FTPMODE=

OK

正常返回

ERROR

输入格式有误

查询命令

AT+FTPMODE?

+FTPMODE: OK

测试命令

AT+FTPMODE=?

OK

参数定义:

参数

定义

取值

对取值的说明

FTP 主动被动模式

0

主动模式

1

被动模式

设置 FTP 数据传输类型:AT+FTPTYPE

语法规则:

命令类型

语法

返回

说明

设置命令

AT+FTPTYPE=

OK

正常返回

ERROR

输入格式有误

查询命令

AT+FTPTYPE?

+FTPTYPE: OK

测试命令

AT+FTPTYPE=?

OK

参数定义:

参数

定义

取值

对取值的说明

FTP 数据传输类型

“A”

FTP ASCII 字符集

“I”

FTP Binary 字符集

设置 FTP 输入类型:AT+FTPPUTOPT

语法规则:

命令类型

语法

返回

说明

设置命令

AT+FTPPUTOPT=

OK

正常返回

ERROR

输入格式有误

查询命令

AT+FTPPUTOPT?

+FTPPUTOPT: OK

测试命令

AT+FTPPUTOPT=?

OK

参数定义:

参数

定义

取值

对取值的说明

FTP 数据传输类型

“APPE”

添加文件

“STOU”

存储唯一的文件

“STOR”

存储文件

设置 FTP 承载标识:AT+FTPCID

语法规则:

命令类型

语法

返回

说明

设置命令

AT+FTPCID=

OK

正常返回

ERROR

输入格式有误

查询命令

AT+FTPCID?

+FTPCID: OK

测试命令

AT+FTPCID=?

OK

参数定义:

参数

定义

取值

对取值的说明

FTP 承载标识

1~3

同+SAPBR 中定义。缺省值为 0。

设置 FTP 下载续传:AT+FTPREST

语法规则:

命令类型

语法

返回

说明

设置命令

AT+FTPREST=

OK

正常返回

ERROR

输入格式有误

查询命令

AT+FTPREST?

+FTPREST: OK

测试命令

AT+FTPREST=?

OK

参数定义:

参数

定义

取值

对取值的说明

要续传的断点

设置 FTP 服务器地址:AT+FTPSERV

语法规则:

命令类型

语法

返回

说明

设置命令

AT+FTPSERV=

OK

正常返回

ERROR

输入格式有误

查询命令

AT+FTPSERV?

+FTPSERV: OK

测试命令

AT+FTPSERV=?

OK

参数定义:

参 数

定义

取 | 对取值的说明 值 |

FTP 服务器地址, IP 或域名

32-bit 十 进 制 数 , 用 . 分 开 , 形 式 如 : xxx.xxx.xxx.xxx。 如果是 DNS,则为长度不超过 49 的 ASCII 字符串。

设置 FTP 用户名称:AT+FTPUN

语法规则:

命令类型

语法

返回

说明

设置命令

AT+FTPUN=

OK

正常返回

ERROR

输入格式有误

查询命令

AT+FTPUN?

+FTPUN: OK

测试命令

AT+FTPUN=?

OK

参数定义:

参数

定义

取值

对取值的说明

FTP 用户名

为长度不超过 49 的 ASCII 字符串。

设置 FTP 密码:AT+FTPPW

语法规则:

命令类型

语法

返回

说明

设置命令

AT+FTPPW=

OK

正常返回

ERROR

输入格式有误

查询命令

AT+FTPPW?

+FTPPW: OK

测试命令

AT+FTPPW=?

OK

参数定义:

参数

定义

取值

对取值的说明

FTP 密码

为长度不超过 49 的 ASCII 字符串。

设置 FTP 下载文件名称:AT+FTPGETNAME

设置服务器端目标文件的名称。

语法规则:

命令类型

语法

返回

说明

设置命令

AT+FTPGETNAME=

OK

正常返回

ERROR

输入格式有误

查询命令

AT+FTPGETNAME?

+FTPGETNAME: OK

测试命令

AT+FTPGETNAME=?

OK

参数定义:

参数

定义

取值

对取值的说明

FTP 下载文件名称

为长度不超过 99 的 ASCII 字符串。

设置 FTP 下载文件路径:AT+FTPGETPATH

本命令是设置目标文件在服务器端的路径。

语法规则:

命令类型

语法

返回

说明

设置命令

AT+FTPGETPATH=

OK

正常返回

ERROR

输入格式有误

查询命令

AT+FTPGETPATH?

+FTPGETPATH: OK

测试命令

AT+FTPGETPATH=?

OK

参数定义:

参数

定义

取值

对取值的说明

FTP 下载文件路径

长度不超过 255 的 ASCII 字符串。

设置 FTP 上传文件名称:AT+FTPPUTNAME

设置将文件上传到服务器后的保存名称。

语法规则:

命令类型

语法

返回

说明

设置命令

AT+FTPPUTNAME=

OK

正常返回

ERROR

输入格式有误

查询命令

AT+FTPPUTNAME?

+FTPPUTNAME: OK

测试命令

AT+FTPPUTNAME=?

OK

参数定义:

参数

定义

取值

对取值的说明

FTP 上传文件名称

长度不超过 99 的 ASCII 字符串。

设置 FTP 上传文件路径:AT+FTPPUTPATH

设置将文件上传到服务器后的保存目录。

语法规则:

命令类型

语法

返回

说明

设置命令

AT+FTPPUTPATH=

OK

正常返回

ERROR

输入格式有误

查询命令

AT+FTPPUTPATH?

+FTPPUTPATH: OK

测试命令

AT+FTPPUTPATH=?

OK

参数定义:

参数

定义

取值

对取值的说明

FTP 上传文件路径

长度不超过 99 的 ASCII 字符串。

远程服务器上创建文件目录:AT+FTPMKD

语法规则:

命令类型

语法

返回

说明

执行命令

AT+FTPMKD

OK +FTPMKD: 1,0

创建成功

OK +FTPMKD: 1,

创建失败

+CME ERROR:

如果是命令错误

测试命令

AT+FTPMKD=?

OK

注意事项

执行命令创建的 文件目录由命令A T+FTPGETPATH定义

参数定义:

参数

定义

取值

对取值的说明

错误码

与 AT+FTPGET 命令的定义相同

远程服务器上删除文件目录:AT+FTPRMD

语法规则:

命令类型

语法

返回

说明

执行命令

AT+FTPRMD

OK +FTPRMD: 1,0

删除成功

OK +FTPRMD: 1,

删除失败

+CME ERROR:

如果是命令错误

测试命令

AT+FTPRMD=?

OK

注意事项

执行命令删除的 文件目录由命令A T+FTPGETPATH定义

参数定义:

参数

定义

取值

对取值的说明

错误码

与 AT+FTPGET 命令的定义相同

下载文件:AT+FTPGET

语法规则:

命令类型

语法

返回

说明

设置命令

AT+FTPGET=[,]

OK

输入AT+FTPGET=1 的返回

+FTPGET:2, ……..数据……….. OK

输入: AT+FTPGET=2, 的返回

URC 上报

+FTPGET:1,1

输入 AT+FTPGET=1后,有 此上报,表示有数 据了,第一个参数 1表示为1

+FTPGET:1,

输入AT+FTPGET= 1后,有此上报,表 示FTP下载失败,第 一个参数1表示为1

+FTPGET:1,0

表示 数据传输结束,第 一个参数1表示为1

测试命令

AT+FTPGET=?

OK

参数定义:

参数

定义

取值

对取值的说明

工作模式

1

打开 FTP 会话

2

读入 FTP 下载数据

请求读入的数据长度

1~1460

确认读入的数据长度

1~1460

可能小于。0 表示没有数据可以读入。

错误码

61

网络错误 net error

62

DNS 错误 DNS error

63

连接错误 connect error

64

超时 timeout

65

服务器错误 server error

66

操作禁止operation not allowed

70

应答错误 reply error

71

用户错误 user error

72

口令错误 password error

73

类型错误type error

74

保持错误 rest error

75

被动错误 passive error

76

主动错误active error

77

操作错误 operate error

78

上传错误 upload error

79

下载错误 download error

80~84

FTP SSL 连接错误

85

文件错误

86

主动退出

上传文件:AT+FTPPUT

语法规则:

命 | 语法 令 | 类 | 型 |

返回

说明

设 | AT | OK 置 | +FTPPUT=[,] | 命 | | 令 | |

输入AT+FTPPUT=1的返回

+FTPPUT:2, …….. //input data here OK

输入: AT+FTPPUT=2, 的返回

OK +FTPPUT: 1,0

输入: AT+FTPPUT=2,0 的返回

U | + R | FTPPUT:1,1, C | 上 | 报 |

输 入AT+FTPPUT=1后,有此上 报,表示可以上传数据了此 时通过输入AT+FTPPUT=2,上 传数据第一个参数1表示为1

+FTPPUT:1,0

表示数据传输会话 结束。第一个参数1表示为1

+FTPPUT:1,

如果 =1,而且FTP会话失败。错 误码定义请参考AT+FTPGET 错误码定义

测 | AT+FTPPUT=? | OK 试 | | 命 | | 令 | |

参数定义:

参数

定义

取值

对取值的说明

FTP 上传工作模式

1

打开 FTP 会话

2

写 FTP 上传数据

请求上传的数据长度

0-

确认可以上传的数据长度

单次可以上传的最大的长度,取决于网络状态

获取远程服务器上文件大小:AT+FTPSIZE

语法规则:

命令类型

语法

返回

说明

执行命令

AT+FTPSIZE

OK +FTPSIZE: 1,0,

获取文件大小成功

OK

获取文件大小失败

+FTPSIZE: 1,,0

+CME ERROR:

如果是命令错误

测试命令

AT+FTPSIZE=?

OK

注意事项

文件由命令 AT+FTPGETNAME和A T+FTPGETPATH指定

参数定义:

参数

定义

取值

对取值的说明

文件大小

单位:字节

错误码

与 AT+FTPGET 命令的定义相同

获取远程服务器上文件目录:AT+FTPLIST

语法规则:

命 | 语法 令 | 类 | 型 |

返回

执 | AT+FTPLIST=[,] 行 | 命 | 令 |

如果=1,则命令格式为: AT+FTPLIST=1 返回值为: OK或 +CME ERROR:

如果=2,则命令格式为: AT+FTPLIST=2, 返回值为: +FTPLIST:2, ….数据… OK

测 | AT+FTPLIST=? 试 | 命 | 令 |

OK

U | 输入AT+FTPLIST=1后, R | 如果是一个成功的FT C | P会话,后续会有如下的URC上报: 上 | +FTPLIST:1,1 报 | 如果是FTP数据传输

结束,后续会有如下的URC上报:
+FTPLIST:1,0
如果FTP会话
失败,后续会有如下的URC上报:
+FTPLIST:1,

参数定义:

参数

定义

取值

对取值的说明

工作模式

1

打开 FTP 获取文件目录会话

2

读取 FTP 获取文件目录的数据

请求的数据的长度

1~1460

实际的数据长度

同+FTPGET 中定义

保存 FTP 应用上下文:AT+FTPSCONT

语法规则:

命 | 语 令 | 法 类 | 型 |

返回

说明

查 | AT+ | +FTPSCONT: +FTPSERV: | 询 | FTP | +FTPPORT: +FTPUN: +FTPPW: | 命 | SCO | +FTPCID: +FTPMODE: +FTPTYPE: | 令 | NT? | +FTPPUTOPT: +FTPREST: |

| +FTPGETNAME: +FTPGETPATH: |
| +FTPPUTNAME: +FTPPUTPATH: |
| +FTPTIMEOUT: OK |

执 | AT | OK 行 | +FT | 命 | PSC | 令 | ONT |

将FTP 上下文保存,等模块重启后, 将自动载入上下文参数并生效

退出当前 FTP 会话:AT+FTPQUIT

语法规则:

命令类型

语法

返回

说明

设置命令

AT+FTPQUIT

OK

成功

ERROR

失败

测试命令

AT+FTPQUIT=?

OK

服务器搭建教程

可参考

https://doc.luatos.wiki/470/

使用流程演示

https://doc.luatos.wiki/740/