物联网平台支持设备通过MQTT协议,将文件上传至用户的OSS空间或者物联网平台文件存储空间,以减少硬件资源的开销,并降低开发成本。本文介绍通过配置C Link SDK,帮助设备实现文件上传功能。

前提条件

背景信息

功能原理

设备的应用程序通过MQTT协议上传文件至物联网平台:

  • 该功能API的详细信息,请参见aiot_mqtt_upload_api.h

  • 文件上传功能基于MQTT连接,更多信息,请参见MQTT接入

  • 如下功能时序图,以设备的应用程序./demos/mqtt_upload_basic_demo.c为例,介绍应用程序实现该功能的流程。MQTT文件上传

使用说明

  • 仅中国的华东2(上海)、华北2(北京)和华南1(深圳)地域下,支持设备通过MQTT协议上传文件。

  • 上传文件的名称限制如下:

    • 支持数字、英文字母、下划线(_)和英文句点(.)。

    • 首字符仅支持数字和英文字母。

    • 长度不超过100字节。

  • 文件上传功能支持多个文件上传。

  • 一个实例下,可存储的文件总大小不能超过1 GB。

  • 一个设备下,可存储的文件数量不能超过1,000个。

  • 单个文件不超过16 MB。

  • 设备向物联网平台发送上传文件请求时,物联网平台根据文件名,执行以下策略。

    • 若物联网平台不存在同名文件,直接创建文件的上传任务。

    • 若物联网平台存在同名文件,则根据所设置的同名文件处理策略,执行以下对应操作。示例代码及说明,请参见步骤四:请求上传文件

      处理策略(conflictStrategy)

      说明

      覆盖模式(overwrite)

      默认模式,删除已存在的同名文件,仅保留最新上传的文件。

      文件追加模式(append)

      发起上传文件请求后,物联网平台返回已存在的同名文件信息,设备端可根据业务需要,选择以下操作:

      • 如果已存在的同名文件为未完成上传的文件,则设备继续执行上传任务。

        说明

        物联网平台仅在24小时内保留未完成上传的文件。

      • 如果已存在的同名文件为已完成上传的文件,则设备选择覆盖模式或重命名文件后,重新上传文件。

      拒绝模式(reject)

      物联网平台返回文件已存在的错误码,并拒绝再次上传该文件。

使用示例