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 服务器地址, | | 32-bit 十 进 制 数 , 用 . 分 开 , 形 式 | | | IP 或域名 | | 如 : 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 | 输入AT+FTPPUT=1的返回 | | 置 | +FTPPUT=[,] | | | | 命 | | | | | 令 | | | | +---+-------------+--------------------------+--------------------------+ | | | +FTPPUT:2, …….. //input | 输入: AT+FTPPUT=2, | | | | data here OK | 的返回 | +---+-------------+--------------------------+--------------------------+ | | | OK +FTPPUT: 1,0 | 输入: AT+FTPPUT=2,0 | | | | | 的返回 | +---+-------------+--------------------------+--------------------------+ | U | + | 输 | | | R | FTPPUT:1,1, | 入AT+FTPPUT=1后,有此上 | | | C | | 报,表示可以上传数据了此 | | | 上 | | 时通过输入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 | 将FTP | | 行 | +FT | | 上下文保存,等模块重启后, | | 命 | PSC | | 将自动载入上下文参数并生效 | | 令 | ONT | | | +---+-----+------------------------------+----------------------------+ 退出当前 FTP 会话:AT+FTPQUIT ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 语法规则: ======== ============ ===== ==== 命令类型 语法 返回 说明 ======== ============ ===== ==== 设置命令 AT+FTPQUIT OK 成功 \ ERROR 失败 测试命令 AT+FTPQUIT=? OK ======== ============ ===== ==== 服务器搭建教程 -------------- 可参考 https://luatdoc.papapoi.com/470/ 使用流程演示 ------------ https://luatdoc.papapoi.com/740/