Tous les produits
Search
Centre de documentation

IoT Platform:Exemple 1 : Téléchargement de plusieurs fichiers via MQTT

Dernière mise à jour :Aug 10, 2026

Cette rubrique s'appuie sur le fichier de démonstration ./demos/mqtt_upload_basic_demo.c du Link SDK pour C pour expliquer comment utiliser les API du Link SDK afin de télécharger des fichiers vers IoT Platform via MQTT, réduisant ainsi la consommation de ressources matérielles et les coûts de développement.

Contexte

Étape 1 : Initialiser le téléchargement de fichiers

  1. Ajoutez les fichiers d'en-tête.

    ……
    ……
    #include "aiot_mqtt_api.h"
    #include "aiot_mqtt_upload_api.h"
    #include "core_crc64.h"
    ……
  2. Configurez les dépendances sous-jacentes et la sortie des journaux.

    /* A collection of system adaptation functions located in the portfiles/aiot_port/ directory. */
    extern aiot_sysdep_portfile_t g_aiot_sysdep_portfile;
    /* The server certificate located in external/ali_ca_cert.c. */
    extern const char *ali_ca_cert;
    /* The log callback, where SDK logs are output. */
    static int32_t demo_state_logcb(int32_t code, char *message)
    {
        printf("%s", message);
        return 0;
    }
  3. Appelez aiot_mqtt_upload_init pour créer une instance de client de téléchargement de fichiers et initialiser ses paramètres par défaut.

        mqtt_handle = aiot_mqtt_upload_init();

Étape 2 : Configurer le téléchargement de fichiers

Appelez aiot_mqtt_upload_setopt pour configurer les options suivantes.

  1. Associez le handle de connexion MQTT.

    Important

    Avant de configurer les paramètres de la fonctionnalité de téléchargement de fichiers, assurez-vous d'avoir configuré les informations d'authentification de l'appareil et les paramètres associés. Configurer les paramètres de connexion MQTT.

    Les requêtes de téléchargement de fichiers utilisent des connexions MQTT. Associez le handle de connexion MQTT à cette option.

        void *up_handle = aiot_mqtt_upload_init();
        aiot_mqtt_upload_setopt(up_handle, AIOT_MQTT_UPLOADOPT_MQTT_HANDLE, mqtt_handle);
  2. (Facultatif)

    Configurez les paramètres de téléchargement de fichiers.

    • Exemple de code :

          uint32_t rsp_timeout = 2000;
          aiot_mqtt_upload_setopt(up_handle, AIOT_MQTT_UPLOADOPT_RSP_TIMEOUT_MS, &rsp_timeout);
          uint32_t rety_count = 5;
          aiot_mqtt_upload_setopt(up_handle, AIOT_MQTT_UPLOADOPT_RETRY_COUNT, &rety_count);
          uint32_t block_size = 1024;
          aiot_mqtt_upload_setopt(up_handle, AIOT_MQTT_UPLOADOPT_DEFAULT_BLOCK_SIZE, &block_size);
    • Paramètres :

      Paramètre

      Description

      rsp_timeout

      Délai d'expiration pour la retransmission de chaque bloc de données, en millisecondes.

      Valeur par défaut : 5 000 ms (5 secondes). Définissez sur 0 pour utiliser la valeur par défaut.

      Exemple de valeur : 2 000 ms.

      AIOT_MQTT_UPLOADOPT_RSP_TIMEOUT_MS

      Définit le délai d'expiration pour la retransmission de chaque bloc de données lors du téléchargement de fichiers.

      rety_count

      Nombre de tentatives en cas d'expiration.

      Valeur par défaut : 10.

      Exemple de valeur : 5.

      AIOT_MQTT_UPLOADOPT_RETRY_COUNT

      Définit le nombre de tentatives en cas d'expiration lors du téléchargement de fichiers.

      block_size

      Taille maximale de chaque bloc de données, en octets.

      Plage valide : 256–131 072. Valeur par défaut : 2 048 octets.

      Exemple de valeur : 1 024 octets.

      AIOT_MQTT_UPLOADOPT_DEFAULT_BLOCK_SIZE

      Définit la taille maximale de chaque bloc de données envoyé lors du téléchargement de fichiers.

(Facultatif) Étape 3 : Calculer la somme de contrôle CRC64

Par défaut, le protocole effectue un calcul CRC16 sur chaque bloc de données. Vous pouvez également utiliser CRC64 pour valider l'intégrité du fichier entier. Le SDK inclut une bibliothèque C pour le calcul CRC64.

Le code suivant calcule la somme de contrôle CRC64 pour un fichier :

    uint64_t crc = mqtt_upload_get_file_crc64(MQTT_UPLOAD_FILE_NAME);

Étape 4 : Demander un téléchargement de fichier

  1. Appelez aiot_mqtt_upload_open_stream pour envoyer une requête de téléchargement de fichier à IoT Platform.

    Important
    • Lors du téléchargement d'un fichier, n'appelez pas aiot_mqtt_upload_open_stream plusieurs fois pour le même fichier. Si un téléchargement échoue, vous pouvez renvoyer la requête pour le reprendre.

    • Lors du téléchargement de différents fichiers, vous pouvez appeler aiot_mqtt_upload_open_stream plusieurs fois. Le SDK prend en charge le téléchargement simultané de plusieurs fichiers.

    • Exemple de code :

      • Définissez les tailles et les noms des fichiers :

        #define MQTT_UPLOAD_FILE_SIZE       (2 * 1024)
        #define MQTT_UPLOAD_FILE_NAME       ("mqttuploadfile001.txt")
        #define MQTT_UPLOAD_FILE_SIZE2       (1 * 1024 + 127)
        #define MQTT_UPLOAD_FILE_NAME2       ("mqttuploadfile002.txt")
      • Envoyez des requêtes pour télécharger les fichiers :

         uint32_t test_userdata = 100;
            aiot_mqtt_upload_open_stream(up_handle, MQTT_UPLOAD_FILE_NAME, MQTT_UPLOAD_FILE_SIZE,
                AIOT_MQTT_UPLOAD_FILE_MODE_OVERWRITE, &crc, mqtt_upload_read_data_handler, &test_userdata);
            mqtt_upload_create_upload_file(MQTT_UPLOAD_FILE_NAME2, MQTT_UPLOAD_FILE_SIZE2);
            aiot_mqtt_upload_open_stream(up_handle, MQTT_UPLOAD_FILE_NAME2, MQTT_UPLOAD_FILE_SIZE2,
                AIOT_MQTT_UPLOAD_FILE_MODE_OVERWRITE, NULL, mqtt_upload_read_data_handler, NULL);
    • Description de l'exemple de code :

      • L'exemple de code appelle cette API pour télécharger deux fichiers simultanément : mqttuploadfile001.txt et mqttuploadfile002.txt.

        Important
        • Les noms de fichiers sont soumis aux restrictions suivantes :

          • Ils ne doivent contenir que des chiffres, des lettres, des traits de soulignement (_) et des points (.).

          • Ils doivent commencer par un chiffre ou une lettre.

          • Leur longueur doit être inférieure ou égale à 100 octets.

        • La taille maximale du fichier est de 16 Mo.

      • Le fichier mqttuploadfile001.txt utilise la validation CRC64 et transmet le paramètre userdata.

      • Le fichier mqttuploadfile002.txt n'utilise pas la validation CRC64 et aucun paramètre userdata n'est transmis.

      • L'exemple de code utilise la politique de traitement overwrite. Le tableau suivant décrit les politiques de traitement disponibles.

        Politique

        Description

        overwrite

        Politique par défaut. IoT Platform supprime le fichier existant portant le même nom et conserve uniquement le fichier nouvellement téléchargé.

        append

        Lorsqu'un appareil envoie une requête de téléchargement de fichier, IoT Platform renvoie des informations sur tout fichier existant portant le même nom. L'appareil peut alors :

        • Si le fichier existant a été téléchargé de manière incomplète, l'appareil peut reprendre le téléchargement.

          Remarque

          IoT Platform ne conserve les téléchargements incomplets que pendant 24 heures.

        • Si le fichier a déjà été entièrement téléchargé, l'appareil doit utiliser la politique overwrite ou renommer le fichier local avant de le télécharger à nouveau.

        reject

        IoT Platform renvoie un code d'erreur indiquant que le fichier existe déjà et rejette la requête de téléchargement.

  2. IoT Platform répond à la requête de téléchargement de fichier et déclenche un rappel sur l'appareil.

    Dans le rappel, le SDK lit le contenu du fichier ou les données en mémoire par blocs et effectue un calcul CRC16 sur chaque bloc.

    Important

    Pendant le transfert par blocs, chaque bloc de données ne doit pas dépasser la valeur AIOT_MQTT_UPLOADOPT_DEFAULT_BLOCK_SIZE. À l'exception du dernier bloc, chaque bloc doit comporter au moins 256 octets.

    La fonction de rappel suivante mqtt_upload_read_data_handler lit les données du fichier par blocs :

    int32_t mqtt_upload_read_data_handler(const aiot_mqtt_upload_recv_t *packet, uint8_t *data, uint32_t size, void *userdata) {
        int32_t read_len = 0;
        if (userdata != NULL) {
            uint32_t *test_userdata = (uint32_t *)userdata;
            printf("test_userdata:%d\r\n", *test_userdata);
        }
        if (packet == NULL) {
            return 0;
        }
        if (packet->desc.code == UPLOAD_FILE_OK) {
            if (data != NULL && size != 0) {
                uint32_t read_size = size;
                FILE *fp;
                char* file_name = packet->desc.file_name;
                fp = fopen(file_name, "r");
                uint32_t offset = packet->desc.file_offset;
                fseek(fp, offset, SEEK_SET);
                printf("Open %s read at: %d\r\n", file_name, offset);
                read_len = fread(data, sizeof(uint8_t), read_size, fp);
                printf("Read_len: %d\r\n", read_len);
                fclose(fp);
            }
        } else {
            printf("Error code:%d, message:%s\r\n", packet->desc.code, packet->desc.message);
        }
        return read_len;
    }
  3. (Facultatif)

    Pour annuler un téléchargement en cours, appelez aiot_mqtt_upload_cancel_stream.

    Référence de l'API : aiot_mqtt_upload_cancel_stream.

Étape 5 : Gérer l'état du téléchargement

Pendant le téléchargement du fichier, appelez aiot_mqtt_upload_process dans une boucle pour vérifier l'état du téléchargement :

    while(1) {
        aiot_mqtt_upload_result_t result = aiot_mqtt_upload_process(up_handle);
        if (result.code == STATE_MQTT_UPLOAD_FINISHED) {
            /* Upload successful. */
            printf("MQTT Upload file(%s) success\r\n", result.file_name);
            uploaded_file++;
            if (uploaded_file == 2) {
                break;
            }
        } else if (result.code == STATE_MQTT_UPLOAD_FAILED ||
                   result.code == STATE_MQTT_UPLOAD_FAILED_TIMEOUT ||
                   result.code == STATE_MQTT_UPLOAD_CANCEL_FAILED ) {
            /* Upload failed. */
            printf("MQTT Upload file(%s) failed,res:-0x%.4X\r\n", result.file_name, -result.code);
            /* Destroy the MQTT UPLOAD instance. */
        } else if (result.code == STATE_MQTT_UPLOAD_CANCEL_SUCCESS) {
            printf("MQTT Upload file(%s) cancel success,res:-0x%.4X\r\n", result.file_name, -result.code);
        } else if (result.code == STATE_MQTT_UPLOAD_FAILED_WHOLE_CHECK) {
            printf("MQTT Upload file(%s) whole file md5 failed,res:-0x%.4X\r\n", result.file_name, -result.code);
        }
        sleep(1);
    }

Étape 6 : Désinitialiser le téléchargement de fichiers

Appelez aiot_mqtt_upload_deinit pour détruire l'instance de client de téléchargement de fichiers et libérer les ressources :

aiot_mqtt_upload_deinit(&up_handle);

Journaux côté appareil

Consultez les résultats d'exécution côté appareil.

  • Journaux de connexion :

    Une connexion réussie de l'appareil à IoT Platform génère le journal suivant :

    [1637138922.457][LK-0313] MQTT user calls aiot_mqtt_connect api, connect
    [1637138922.457][LK-032A] mqtt host: iot-******.iot-as-mqtt.unify.aliyuncs.com
    [1637138922.457][LK-0317] user name: LightSwitch&a18wP******
    [1637138922.457][LK-0318] password: 2AE57DEEAADE002064F87DEC55EE2EDD2A1996E44BA8F5622507D1EFD6******
    success to establish tcp, fd=5
    local port: 57139
    [1637138922.488][LK-1000] establish mbedtls connection with server(host='iot-******.iot-as-mqtt.unify.aliyuncs.com', port=[1883])
    [1637138922.507][LK-1000] success to establish mbedtls connection, (cost 45247 bytes in total, max used 47983 bytes)
    [1637138922.654][LK-0313] MQTT connect success in 197 ms
    AIOT_MQTTEVT_CONNECT
                        
  • Abonnements aux rubriques de téléchargement de fichiers :

    [1637138922.654][LK-2013] aiot_mqtt_upload_init init
    [1637138922.654][LK-0309] sub: /sys/a18wP******/LightSwitch/thing/file/upload/mqtt/init_reply
    [1637138922.654][LK-0309] sub: /sys/a18wP******/LightSwitch/thing/file/upload/mqtt/send_reply
    [1637138922.654][LK-0309] sub: /sys/a18wP******/LightSwitch/thing/file/upload/mqtt/cancel_reply
  • Journaux des requêtes de téléchargement de fichiers :

    L'appareil envoie des requêtes de téléchargement pour deux fichiers :

    |
    **Nom du fichier**
    |
    **Taille (octets)**
    |
    **Validation CRC64**
    | | --- | --- | --- | |
    *mqttuploadfile001.txt*
    |
    2048
    |
    Oui
    | |
    *mqttuploadfile002.txt*
    |
    1151
    |
    Non
    |
    [1637138922.655][LK-0309] pub: /sys/a18wP******/LightSwitch/thing/file/upload/mqtt/init
    [LK-030A] > 7B 22 69 64 22 3A 22 31  22 2C 22 70 61 72 61 6D | {"id":"1","params"
    [LK-030A] > 73 22 3A 7B 22 66 69 6C  65 4E 61 6D 65 22 3A 22 | :{"fileName":"
    [LK-030A] > 6D 71 74 74 75 70 6C 6F  61 64 66 69 6C 65 30 30 | mqttuploadfile001.txt"
    [LK-030A] > 31 2E 74 78 74 22 2C 22  66 69 6C 65 53 69 7A 65 | ,"fileSize
    [LK-030A] > 22 3A 32 30 34 38 2C 22  63 6F 6E 66 6C 69 63 74 | ":2048,"conflictStrategy"
    [LK-030A] > 53 74 72 61 74 65 67 79  22 3A 22 6F 76 65 72 77 | :"overwrite"
    [LK-030A] > 72 69 74 65 22 2C 22 66  69 63 4D 6F 64 65 22 3A | ,"ficMode":
    [LK-030A] > 22 63 72 63 36 34 22 2C  22 66 69 63 56 61 6C 75 | "crc64","ficValue"
    [LK-030A] > 65 22 3A 22 66 34 38 66  34 33 37 64 35 35 64 34 | :"f48f437d55**
    [LK-030A] > 37 31 34 63 22 7D 7D                             | ****"}}
    [1637138922.655][LK-0309] pub: /sys/a18wP******/LightSwitch/thing/file/upload/mqtt/init
    [LK-030A] > 7B 22 69 64 22 3A 22 32  22 2C 22 70 61 72 61 6D | {"id":"2","params"
    [LK-030A] > 73 22 3A 7B 22 66 69 6C  65 4E 61 6D 65 22 3A 22 | :{"fileName":"
    [LK-030A] > 6D 71 74 74 75 70 6C 6F  61 64 66 69 6C 65 30 30 | mqttuploadfile002.txt"
    [LK-030A] > 32 2E 74 78 74 22 2C 22  66 69 6C 65 53 69 7A 65 | ,"fileSize
    [LK-030A] > 22 3A 31 31 35 31 2C 22  63 6F 6E 66 6C 69 63 74 | ":1151,"conflictStrategy"
    [LK-030A] > 53 74 72 61 74 65 67 79  22 3A 22 6F 76 65 72 77 | :"overwrite"
    [LK-030A] > 72 69 74 65 22 7D 7D                             | }}


















  • Journaux des réponses de téléchargement de fichiers :

    Journaux de réponse pour les deux fichiers :

    • mqttuploadfile001.txt

      [1637138923.214][LK-0309] pub: /sys/a18wP******/LightSwitch/thing/file/upload/mqtt/init_reply
      [LK-030A] < 7B 22 63 6F 64 65 22 3A  32 30 30 2C 22 64 61 74 | {"code":200,"data"
      [LK-030A] < 61 22 3A 7B 22 66 69 6C  65 4E 61 6D 65 22 3A 22 | :{"fileName":"
      [LK-030A] < 6D 71 74 74 75 70 6C 6F  61 64 66 69 6C 65 30 30 | mqttuploadfile001.txt"
      [LK-030A] < 31 2E 74 78 74 22 2C 22  75 70 6C 6F 61 64 49 64 | ,"uploadId
      [LK-030A] < 22 3A 22 6B 54 48 76 63  47 45 31 78 58 56 48 33 | ":"kTHvcGE1xXVH3
      [LK-030A] < 46 79 44 4C 34 4C 55 30  31 30 32 30 30 22 2C 22 | FyDL4LU******","
      [LK-030A] < 6F 66 66 73 65 74 22 3A  30 2C 22 66 69 6C 65 53 | offset":0,"fileSize"
      [LK-030A] < 69 7A 65 22 3A 32 30 34  38 2C 22 63 6F 6E 66 6C | :2048,"conflictStrategy"
      [LK-030A] < 69 63 74 53 74 72 61 74  65 67 79 22 3A 22 6F 76 | :"overwrite"}
      [LK-030A] < 65 72 77 72 69 74 65 22  7D 2C 22 69 64 22 3A 22 | ,"id":"1"
      [LK-030A] < 31 22 2C 22 6D 65 73 73  61 67 65 22 3A 22 73 75 | ,"message":
      [LK-030A] < 63 63 65 73 73 22 7D                             | "success"}
      test_userdata:100
      Open mqttuploadfile001.txt read at: 0
    • mqttuploadfile002.txt

      [LK-030A] < 7B 22 63 6F 64 65 22 3A  32 30 30 2C 22 64 61 74 | {"code":200,"data"
      [LK-030A] < 61 22 3A 7B 22 66 69 6C  65 4E 61 6D 65 22 3A 22 | :{"fileName":"
      [LK-030A] < 6D 71 74 74 75 70 6C 6F  61 64 66 69 6C 65 30 30 | mqttuploadfile002.txt"
      [LK-030A] < 32 2E 74 78 74 22 2C 22  75 70 6C 6F 61 64 49 64 | ,"uploadId
      [LK-030A] < 22 3A 22 6B 6F 48 54 45  4B 46 34 59 58 31 6E 61 | ":"koHTEKF4YX1na
      [LK-030A] < 46 30 74 49 33 43 35 30  31 30 32 30 30 22 2C 22 | F0tI3C5******","
      [LK-030A] < 6F 66 66 73 65 74 22 3A  30 2C 22 66 69 6C 65 53 | offset":0,"fileSize"
      [LK-030A] < 69 7A 65 22 3A 31 31 35  31 2C 22 63 6F 6E 66 6C | :1151,
      [LK-030A] < 69 63 74 53 74 72 61 74  65 67 79 22 3A 22 6F 76 | "conflictStrategy":
      [LK-030A] < 65 72 77 72 69 74 65 22  7D 2C 22 69 64 22 3A 22 | "overwrite"},"id":"
      [LK-030A] < 32 22 2C 22 6D 65 73 73  61 67 65 22 3A 22 73 75 | 2","message":
      [LK-030A] < 63 63 65 73 73 22 7D                             | "success"}
  • Journaux de lecture de fichiers :

    Après que IoT Platform a répondu et déclenché le rappel, les journaux de lecture de fichiers sont les suivants :

    • mqttuploadfile001.txt

      Open mqttuploadfile001.txt read at: 0
      Read_len: 1024
      [1637138923.215][LK-2014] Read data_len:1024[1637138923.215][LK-0309] pub: /sys/a18wP******/LightSwitch/thing/file/upload/mqtt/send
      [LK-030A] > 00 55 7B 22 69 64 22 3A  22 34 22 2C 22 70 61 72 | .U{"id":"4","params"
      [LK-030A] > 61 6D 73 22 3A 7B 22 75  70 6C 6F 61 64 49 64 22 | :{"uploadId"
      [LK-030A] > 3A 22 6B 54 48 76 63 47  45 31 78 58 56 48 33 46 | :"kTHvcGE1xXVH3F
      [LK-030A] > 79 44 4C 34 4C 55 30 31  30 32 30 30 22 2C 22 6F | yDL4LU******",
      [LK-030A] > 66 66 73 65 74 22 3A 30  2C 22 62 53 69 7A 65 22 | "offset":0,"bSize"
      [LK-030A] > 3A 31 30 32 34 7D 7D 55  4E 41 56 41 4F 4F 56 4C | :1024}}UNAVAOOVL
      [LK-030A] > 53 43 58 4C 57 59 43 54  5A 58 45 4C 47 43 4E 57 | SCXLWYCTZXELGCNW
      [LK-030A] > 58 55 55 41 46 54 47 46  46 42 4D 46 48 48 54 59 | XUUAFTGFFBMFHHTY
      [LK-030A] > 52 59 46 58 44 49 57 45  4A 4E 50 47 46 4A 49 45 | RYFXDIWEJNPGFJIE
      [LK-030A] > 4E 43 55 43 50 4B 54 57  54 50 4F 4F 49 45 4B 4C | NCUCPKTWTPOOIEKL
      [LK-030A] > 4F 5A 54 55 55 42 4C 4B  58 5A 48 59 4D 4A 49 43 | OZTUUBLKXZHYMJIC
      [LK-030A] > 46 41 4E 54 49 41 59 41  46 4E 4B 4D 52 4F 43 51 | FANTIAYAFNKMROCQ
      [LK-030A] > 48 4F 43 56 44 59 54 51  59 57 52 4D 48 4E 42 50 | HOCVDYTQY******
      ......
      ......
      ......
    • mqttuploadfile002.txt

      Open mqttuploadfile002.txt read at: 0
      Read_len: 1024
      [1637138923.216][LK-2014] Read data_len:1024[1637138923.216][LK-0309] pub: /sys/a18wP******/LightSwitch/thing/file/upload/mqtt/send
      [LK-030A] > 00 55 7B 22 69 64 22 3A  22 33 22 2C 22 70 61 72 | .U{"id":"3","params"
      [LK-030A] > 61 6D 73 22 3A 7B 22 75  70 6C 6F 61 64 49 64 22 | :{"uploadId"
      [LK-030A] > 3A 22 6B 6F 48 54 45 4B  46 34 59 58 31 6E 61 46 | :"koHTEKF4YX1naF
      [LK-030A] > 30 74 49 33 43 35 30 31  30 32 30 30 22 2C 22 6F | 0tI3C5******",
      [LK-030A] > 66 66 73 65 74 22 3A 30  2C 22 62 53 69 7A 65 22 | "offset":0,"bSize"
      [LK-030A] > 3A 31 30 32 34 7D 7D 55  4E 41 56 41 4F 4F 56 4C | :1024}}UNAVAOOVL
      [LK-030A] > 53 43 58 4C 57 59 43 54  5A 58 45 4C 47 43 4E 57 | SCXLWYCTZXELGCNW
      [LK-030A] > 58 55 55 41 46 54 47 46  46 42 4D 46 48 48 54 59 | XUUAFTGFFBMFHHTY
      [LK-030A] > 52 59 46 58 44 49 57 45  4A 4E 50 47 46 4A 49 45 | RYFXDIWEJNPGFJIE
      [LK-030A] > 4E 43 55 43 50 4B 54 57  54 50 4F 4F 49 45 4B 4C | NCUCPKTWTPOOIEKL
      [LK-030A] > 4F 5A 54 55 55 42 4C 4B  58 5A 48 59 4D 4A 49 43 | OZTUUBLKXZHYMJIC
      [LK-030A] > 46 41 4E 54 49 41 59 41  46 4E 4B 4D 52 4F 43 51 | FANTIAYAFNKMROCQ
      [LK-030A] > 48 4F 43 56 44 59 54 51  59 57 52 4D 48 4E 42 50 | HOCVDYTQYW******
      ......
      ......
      ......
  • Journaux de surveillance de l'état du téléchargement :

    Une fois le téléchargement terminé, IoT Platform renvoie des informations d'état :

    • mqttuploadfile001.txt

      Remarque

      Ce fichier utilise la validation d'intégrité CRC64, donc le journal inclut la valeur CRC64 validée.

      [1637138924.099][LK-0309] pub: /sys/a18wP******/LightSwitch/thing/file/upload/mqtt/send_reply
      [LK-030A] < 7B 22 63 6F 64 65 22 3A  32 30 30 2C 22 64 61 74 | {"code":200,"data"
      [LK-030A] < 61 22 3A 7B 22 66 69 63  56 61 6C 75 65 43 6C 69 | :{"ficValueCli
      [LK-030A] < 65 6E 74 22 3A 22 66 34  38 66 34 33 37 64 35 35 | ent":"f48f437d55
      [LK-030A] < 64 34 37 31 34 63 22 2C  22 66 69 63 4D 6F 64 65 | ******","ficMode
      [LK-030A] < 22 3A 22 63 72 63 36 34  22 2C 22 75 70 6C 6F 61 | ":"crc64","uploadId"
      [LK-030A] < 64 49 64 22 3A 22 6B 54  48 76 63 47 45 31 78 58 | :"kTHvcGE1xX
      [LK-030A] < 56 48 33 46 79 44 4C 34  4C 55 30 31 30 32 30 30 | VH3FyDL4LU******
      [LK-030A] < 22 2C 22 6F 66 66 73 65  74 22 3A 31 30 32 34 2C | ","offset":1024,
      [LK-030A] < 22 63 6F 6D 70 6C 65 74  65 22 3A 74 72 75 65 2C | "complete":true,
      [LK-030A] < 22 66 69 63 56 61 6C 75  65 53 65 72 76 65 72 22 | "ficValueServer"
      [LK-030A] < 3A 22 66 34 38 66 34 33  37 64 35 35 64 34 37 31 | :"f48f437d55****
      [LK-030A] < 34 63 22 2C 22 62 53 69  7A 65 22 3A 31 30 32 34 | **","bSize":1024
      [LK-030A] < 7D 2C 22 69 64 22 3A 22  36 22 2C 22 6D 65 73 73 | },"id":"6","message"
      [LK-030A] < 61 67 65 22 3A 22 73 75  63 63 65 73 73 22 7D    | :"success"}
      [1637138924.099][LK-2014] Upload total size:2048
    • mqttuploadfile002.txt

      [1637138923.884][LK-0309] pub: /sys/a18wP******/LightSwitch/thing/file/upload/mqtt/send_reply
      [LK-030A] < 7B 22 63 6F 64 65 22 3A  32 30 30 2C 22 64 61 74 | {"code":200,"data"
      [LK-030A] < 61 22 3A 7B 22 75 70 6C  6F 61 64 49 64 22 3A 22 | :{"uploadId":"
      [LK-030A] < 6B 6F 48 54 45 4B 46 34  59 58 31 6E 61 46 30 74 | koHTEKF4YX1naF0t
      [LK-030A] < 49 33 43 35 30 31 30 32  30 30 22 2C 22 6F 66 66 | I3C5******","offset"
      [LK-030A] < 73 65 74 22 3A 31 30 32  34 2C 22 63 6F 6D 70 6C | :1024,"complete"
      [LK-030A] < 65 74 65 22 3A 74 72 75  65 2C 22 62 53 69 7A 65 | :true,"bSize
      [LK-030A] < 22 3A 31 32 37 7D 2C 22  69 64 22 3A 22 35 22 2C | ":127},"id":"5",
      [LK-030A] < 22 6D 65 73 73 61 67 65  22 3A 22 73 75 63 63 65 | "message":"success"
      [LK-030A] < 73 73 22 7D                                      | }
      [1637138923.884][LK-2014] Upload total size:1151
  • Journaux de sortie du programme :

    Une fois le téléchargement terminé, le programme se désabonne des rubriques associées et se termine.

    [1637648533.379][LK-2124] Complete upload total size:2048
    MQTT Upload file(mqttuploadfile001.txt) success
    [1637648534.407][LK-2100] Finish upload,Deleted upload task.
    MQTT Upload file(mqttuploadfile002.txt) success
    [1637648534.407][LK-210F] aiot_mqtt_upload_deinit
    [1637648534.407][LK-0309] unsub: /sys/a18wP******/LightSwitch/thing/file/upload/mqtt/init_reply
    [1637648534.408][LK-0309] unsub: /sys/a18wP******/LightSwitch/thing/file/upload/mqtt/send_reply
    [1637648534.408][LK-0309] unsub: /sys/a18wP******/LightSwitch/thing/file/upload/mqtt/cancel_reply
    [1637648534.513][LK-1000] adapter_network_deinit

Journaux IoT Platform

Gérez les fichiers téléchargés et consultez les journaux d'exécution dans la console IoT Platform.

  • Pour afficher les fichiers téléchargés, accédez à Device Management > Devices. Cliquez sur View pour l'appareil cible, puis sélectionnez l'onglet File Management.

    La liste des fichiers affiche le nom du fichier, la taille, l'heure de téléchargement et les opérations. Vous pouvez Download ou Delete les fichiers téléchargés.

    Gérer les fichiers.

  • Dans le volet de navigation de gauche, accédez à Monitoring and O&M > Log Service. Sélectionnez le produit concerné pour consulter les journaux de téléchargement de fichiers de l'appareil.

    Dans l'onglet Cloud-side Runtime Log, la liste des journaux affiche Time, TraceID, Message Content, DeviceName, Business Type, Operation, Content et Status. Pour les téléchargements de fichiers depuis l'appareil, le type d'activité est Device File Upload et l'opération est FileUploadFinished. Le statut 200 indique un succès.

Étapes suivantes

  • Après avoir configuré le fichier d'exemple, compilez-le pour créer le fichier exécutable ./output/mqtt-upload-basic-demo. Compiler et exécuter la démonstration.

  • Pour résoudre les messages d'erreur dans les journaux d'exécution, consultez les descriptions des codes d'état dans aiot_mqtt_upload_api.h.