文件管理

更新时间:2022-12-13 02:51:42下载pdf

文件管理包括设备通用文件的上传及下载。支持设备通过 MQTT 协议方式将文件上传至涂鸦 IoT 平台空间进行存储,同时支持将文件从涂鸦 IoT 平台空间下载到本地。

本文介绍文件上传及下载的相关消息主题(Topic)和数据格式。

  • 涂鸦 IoT 平台空间基于设备做了访问隔离,非本设备授权的情况不可访问。
  • 下载文件 URL 存在有效期。若超过时间,则该下载 URL 将失效,需要设备再次发起请求获取文件下载 URL。

文件上传

设备发送消息

设备进行文件上传时,需要先请求云端获取上传的预签名 URL,然后根据获取的预签名 URL 上传文件。

单个文件大小不能超过 16M。

Topictylink/${deviceId}/ext/file/upload/request

{
    "msgId":"45lkj3551234***",
    "time":1626197189638,
    "data":{
        "bizType":"FILE",
        "fileName":"apple.png"
    }
}

参数说明

参数 类型 说明 必选 备注
${deviceId} String 设备 ID 设备 ID。如果是子设备的身份,deviceId 应该为子设备 ID。
version String 协议版本 默认 1.0,且仅有 1.0。
msgId String 消息 ID 总长度不超过 32 位的字符,请求和响应消息通过该值建立应答关系。
time Number 消息时间戳 消息发送时的 Unix 时间戳,10 位秒级或 13 位毫秒级。
data Object 获取时间服务参数 获取时间服务参数。
data.bizType String 业务类型 业务类型。目前支持文件类型,取值:FILE
data.fileName String 文件名称 例如:apple.png

设备接收消息

设备进行文件上传时,需要先请求云端获取上传的预签名 URL。

Topictylink/${deviceId}/ext/file/upload/response

{
    "msgId":"45lkj3551234***",
  	"time":1626197189638,
	"data":{
        "bizType":"FILE",
        "url":"https://tuya-temp-fileupload-1254153901.cos.ap-shanghai.myqcloud.com/iot-platform-tmp/bay1617694933431vh5n/1631015173bbb14756aa2.png?sign=q-sign-algorithm%3Dsha1%26q-ak%3DAKIDopcCYgw0qRoyV5qfKjvg2pPkqESnb5zI%26q-sign-time%3D1631015173%3B1631018773%26q-key-time%3D1631015173%3B1631018773%26q-header-list%3D%26q-url-param-list%3D%26q-signature%3D4670e7d3cf500f9210a0f2d5bc9e98d6e*****a6"
    }
}

参数说明

参数 类型 说明 必选 备注
${deviceId} String 设备 ID 设备 ID。如果是子设备的身份,deviceId 应该为子设备 ID。
version String 协议版本 默认 1.0,且仅有 1.0。
msgId String 消息 ID 总长度不超过 32 位的字符,请求和响应消息通过该值建立应答关系。
time Number 消息时间戳 消息发送时的 Unix 时间戳,10 位秒级或 13 位毫秒级。
data Object 获取时间服务参数 获取时间服务参数。
data.bizType String 业务类型 业务类型。目前支持文件类型,取值:FILE
data.url String 上传的预签名 URL 用于设备文件上传的预签名 URL,可用来直接上传文件到云存储。

文件下载

设备发送消息

设备从云端获取指定文件名对应的云存储下载 URL。

Topictylink/${deviceId}/ext/file/download/request

{
    "msgId":"45lkj3551234***",
  	"time":1626197189638,
	"data":{
        "bizType":"FILE",
        "fileName":"apple.png"
    }
}

参数说明

参数 类型 说明 必选 备注
${deviceId} String 设备 ID 设备 ID。如果是子设备的身份,deviceId 应该为子设备 ID。
version String 协议版本 默认 1.0,且仅有 1.0。
msgId String 消息 ID 总长度不超过 32 位的字符,请求和响应消息通过该值建立应答关系。
time Number 消息时间戳 消息发送时的 Unix 时间戳,10 位秒级或 13 位毫秒级。
data Object 获取时间服务参数 获取时间服务参数。
data.bizType String 业务类型 业务类型。目前支持文件类型,取值:FILE
data.fileName String 文件名称 例如:apple.png

设备接收消息

设备请求云端获取文件下载地址,云端响应返回文件 URL。

Topictylink/${deviceId}/ext/file/download/response

{
    "msgId":"45lkj3551234***",
  	"time":1626197189638,
	"data":{
        "bizType":"FILE",
        "fileName": "apple.png",
        "url":"https://tuya-temp-fileupload-1254153901.cos.ap-shanghai.myqcloud.com/iot-platform-tmp/bay1617694933431vh5n/1631015173bbb14756aa2.png?sign=q-sign-algorithm%3Dsha1%26q-ak%3DAKIDopcCYgw0qRoyV5qfKjvg2pPkqESnb5zI%26q-sign-time%3D1631015173%3B1631018773%26q-key-time%3D1631015173%3B1631018773%26q-header-list%3D%26q-url-param-list%3D%26q-signature%3D4670e7d3cf500f9210a0f2d5bc9e98d6******a6",
        "expirationMillis": 1656319250000
    }
}

参数说明

参数 类型 说明 必选 备注
${deviceId} String 设备 ID 设备 ID。如果是子设备的身份,deviceId 应该为子设备 ID。
version String 协议版本 默认 1.0,且仅有 1.0。
msgId String 消息 ID 总长度不超过 32 位的字符,请求和响应消息通过该值建立应答关系。
time Number 消息时间戳 消息发送时的 Unix 时间戳,10 位秒级或 13 位毫秒级。
data Object 获取时间服务参数 获取时间服务参数。
data.bizType String 业务类型 业务类型。目前支持文件类型,取值:FILE
data.url String 下载的预签名 URL 下载的预签名 URL,设备可直接从该地址下载文件。下载链接具有时效性,过期时间戳见 expirationMillis 字段,超过时间则下载链接失效。
data.expirationMillis Long 下载 URL 过期的时间戳(毫秒数) 下载 URL 过期的时间戳(毫秒数),如:1656319250000