物联网平台支持设备通过MQTT协议,将文件上传至用户的OSS空间或者物联网平台文件存储空间,以减少硬件资源的开销,并降低开发成本。本文介绍通过配置C Link SDK,帮助设备实现文件上传功能。
前提条件
定制SDK时,在SDK定制页面的高级能力区域,选中文件上传。
背景信息
物联网平台文件管理功能的更多信息,请参见文件管理。
设备将文件上传至物联网平台后,可调用云端API管理文件。更多信息,请参见:
功能原理
设备的应用程序通过MQTT协议上传文件至物联网平台:
该功能API的详细信息,请参见aiot_mqtt_upload_api.h。
文件上传功能基于MQTT连接,更多信息,请参见MQTT接入。
如下功能时序图,以设备的应用程序./demos/mqtt_upload_basic_demo.c为例,介绍应用程序实现该功能的流程。
使用说明
仅中国的华东2(上海)、华北2(北京)和华南1(深圳)地域下,支持设备通过MQTT协议上传文件。
上传文件的名称限制如下:
支持数字、英文字母、下划线(_)和英文句点(.)。
首字符仅支持数字和英文字母。
长度不超过100字节。
文件上传功能支持多个文件上传。
一个实例下,可存储的文件总大小不能超过1 GB。
一个设备下,可存储的文件数量不能超过1,000个。
单个文件不超过16 MB。
设备向物联网平台发送上传文件请求时,物联网平台根据文件名,执行以下策略。
若物联网平台不存在同名文件,直接创建文件的上传任务。
若物联网平台存在同名文件,则根据所设置的同名文件处理策略,执行以下对应操作。示例代码及说明,请参见步骤四:请求上传文件。
处理策略(conflictStrategy)
说明
覆盖模式(overwrite)
默认模式,删除已存在的同名文件,仅保留最新上传的文件。
文件追加模式(append)
发起上传文件请求后,物联网平台返回已存在的同名文件信息,设备端可根据业务需要,选择以下操作:
如果已存在的同名文件为未完成上传的文件,则设备继续执行上传任务。
说明物联网平台仅在24小时内保留未完成上传的文件。
如果已存在的同名文件为已完成上传的文件,则设备选择覆盖模式或重命名文件后,重新上传文件。
拒绝模式(reject)
物联网平台返回文件已存在的错误码,并拒绝再次上传该文件。
使用示例
文件上传的参考示例请参见:
文件上传功能相关错误码,请参见aiot_mqtt_upload_api.h中的状态码描述。