All Products
Search
Document Center

IoT Platform:Contoh 1: Unggah multi-file MQTT

Last Updated:Jun 04, 2026

Topik ini menggunakan file demo ./demos/mqtt_upload_basic_demo.c dalam Link SDK untuk C sebagai contoh untuk menjelaskan cara memanggil API Link SDK guna mengunggah file ke Platform IoT melalui MQTT, sehingga mengurangi konsumsi sumber daya perangkat keras dan biaya pengembangan.

Latar Belakang

Langkah 1: Inisialisasi unggah file

  1. Tambahkan file header.

    ……
    ……
    #include "aiot_mqtt_api.h"
    #include "aiot_mqtt_upload_api.h"
    #include "core_crc64.h"
    ……
  2. Konfigurasikan dependensi dasar dan output log.

    /* Kumpulan fungsi adaptasi sistem yang terletak di direktori portfiles/aiot_port/. */
    extern aiot_sysdep_portfile_t g_aiot_sysdep_portfile;
    /* Sertifikat server yang terletak di external/ali_ca_cert.c. */
    extern const char *ali_ca_cert;
    /* Callback log, tempat log SDK dikeluarkan. */
    static int32_t demo_state_logcb(int32_t code, char *message)
    {
        printf("%s", message);
        return 0;
    }
  3. Panggil aiot_mqtt_upload_init untuk membuat instans client unggah file dan menginisialisasi parameter default-nya.

        mqtt_handle = aiot_mqtt_upload_init();

Langkah 2: Konfigurasi unggah file

Panggil aiot_mqtt_upload_setopt untuk mengonfigurasi opsi berikut.

  1. Kaitkan handle koneksi MQTT.

    Penting

    Sebelum mengonfigurasi parameter untuk fitur unggah file, pastikan Anda telah mengonfigurasi kredensial otentikasi perangkat dan parameter terkait. Konfigurasi parameter koneksi MQTT.

    Permintaan unggah file menggunakan koneksi MQTT. Kaitkan handle koneksi MQTT dengan opsi ini.

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

    Konfigurasi parameter unggah file.

    • Contoh kode:

          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);
    • Parameter:

      Parameter

      Deskripsi

      rsp_timeout

      Timeout untuk retransmisi setiap chunk data, dalam milidetik.

      Default: 5.000 ms (5 detik). Atur ke 0 untuk menggunakan nilai default.

      Nilai contoh: 2.000 ms.

      AIOT_MQTT_UPLOADOPT_RSP_TIMEOUT_MS

      Mengatur timeout untuk retransmisi setiap chunk data selama unggah file.

      rety_count

      Jumlah upaya pengulangan saat terjadi timeout.

      Default: 10.

      Nilai contoh: 5.

      AIOT_MQTT_UPLOADOPT_RETRY_COUNT

      Mengatur jumlah upaya pengulangan saat terjadi timeout selama unggah file.

      block_size

      Ukuran maksimum setiap chunk data, dalam byte.

      Rentang valid: 256–131.072. Default: 2.048 byte.

      Nilai contoh: 1.024 byte.

      AIOT_MQTT_UPLOADOPT_DEFAULT_BLOCK_SIZE

      Mengatur ukuran maksimum setiap chunk data yang dikirim selama unggah file.

(Opsional) Langkah 3: Hitung checksum CRC64

Secara default, protokol melakukan perhitungan CRC16 pada setiap chunk data. Anda dapat secara opsional menggunakan CRC64 untuk validasi seluruh file. SDK menyertakan pustaka C untuk perhitungan CRC64.

Kode berikut menghitung checksum CRC64 untuk suatu file:

    uint64_t crc = mqtt_upload_get_file_crc64(MQTT_UPLOAD_FILE_NAME);

Langkah 4: Kirim permintaan unggah file

  1. Panggil aiot_mqtt_upload_open_stream untuk mengirim permintaan unggah file ke Platform IoT.

    Penting
    • Saat mengunggah file, jangan panggil aiot_mqtt_upload_open_stream beberapa kali untuk file yang sama. Jika unggah gagal, Anda dapat mengirim ulang permintaan untuk melanjutkannya.

    • Saat mengunggah file berbeda, Anda dapat memanggil aiot_mqtt_upload_open_stream beberapa kali. SDK mendukung unggah beberapa file secara konkuren.

    • Contoh kode:

      • Definisikan ukuran dan nama file:

        #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")
      • Kirim permintaan untuk mengunggah file:

         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);
    • Penjelasan contoh kode:

      • Kode contoh memanggil API ini untuk mengunggah dua file secara konkuren: mqttuploadfile001.txt dan mqttuploadfile002.txt.

        Penting
        • Nama file memiliki batasan berikut:

          • Hanya boleh berisi angka, huruf, garis bawah (_), dan titik (.).

          • Harus dimulai dengan angka atau huruf.

          • Panjangnya tidak lebih dari 100 byte.

        • Ukuran file maksimum adalah 16 MB.

      • File mqttuploadfile001.txt menggunakan validasi CRC64 dan meneruskan parameter userdata.

      • File mqttuploadfile002.txt tidak menggunakan validasi CRC64, dan tidak meneruskan parameter userdata.

      • Kode contoh menggunakan kebijakan pemrosesan overwrite. Tabel berikut menjelaskan kebijakan pemrosesan yang tersedia.

        Kebijakan

        Deskripsi

        overwrite

        Kebijakan default. Platform IoT menghapus file yang sudah ada dengan nama yang sama dan hanya menyimpan file yang baru diunggah.

        append

        Saat perangkat mengirim permintaan unggah file, Platform IoT mengembalikan informasi tentang file yang sudah ada dengan nama yang sama. Perangkat kemudian dapat:

        • Jika file yang ada sebelumnya belum selesai diunggah, perangkat dapat melanjutkan unggahan tersebut.

          Catatan

          Platform IoT hanya menyimpan unggahan yang belum selesai selama 24 jam.

        • Jika file tersebut sudah diunggah sepenuhnya, perangkat harus menggunakan kebijakan overwrite atau mengganti nama file lokal sebelum mengunggah ulang.

        reject

        Platform IoT mengembalikan kode kesalahan yang menunjukkan bahwa file tersebut sudah ada dan menolak permintaan unggah.

  2. Platform IoT merespons permintaan unggah file dan memicu callback pada perangkat.

    Dalam callback tersebut, SDK membaca konten file atau data memori dalam bentuk chunk dan melakukan perhitungan CRC16 pada setiap chunk.

    Penting

    Selama transfer chunk, setiap chunk data tidak boleh melebihi nilai AIOT_MQTT_UPLOADOPT_DEFAULT_BLOCK_SIZE. Kecuali chunk terakhir, setiap chunk harus memiliki ukuran minimal 256 byte.

    Fungsi callback berikut mqtt_upload_read_data_handler membaca data file dalam bentuk chunk:

    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. (Opsional)

    Untuk membatalkan unggahan yang sedang berlangsung, panggil aiot_mqtt_upload_cancel_stream.

    Referensi API: aiot_mqtt_upload_cancel_stream.

Langkah 5: Tangani status unggah

Selama unggah file, panggil aiot_mqtt_upload_process dalam loop untuk memeriksa status unggah:

    while(1) {
        aiot_mqtt_upload_result_t result = aiot_mqtt_upload_process(up_handle);
        if (result.code == STATE_MQTT_UPLOAD_FINISHED) {
            /* Unggah berhasil. */
            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 ) {
            /* Unggah gagal. */
            printf("MQTT Upload file(%s) failed,res:-0x%.4X\r\n", result.file_name, -result.code);
            /* Hapus instans MQTT UPLOAD. */
        } 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);
    }

Langkah 6: Deinisialisasi unggah file

Panggil aiot_mqtt_upload_deinit untuk menghapus instans client unggah file dan melepaskan sumber daya:

aiot_mqtt_upload_deinit(&up_handle);

Log sisi perangkat

Lihat hasil waktu proses di sisi perangkat.

  • Log koneksi:

    Koneksi perangkat yang berhasil ke Platform IoT menghasilkan log berikut:

    [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
                        
  • Langganan topik unggah file:

    [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
  • Log permintaan unggah file:

    Perangkat mengirim permintaan unggah untuk dua file:

    Nama file

    Ukuran (byte)

    Validasi CRC64

    mqttuploadfile001.txt

    2048

    Ya

    mqttuploadfile002.txt

    1151

    Tidak

    [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                             | }}
  • Log respons unggah file:

    Log respons untuk kedua file:

    • 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"}
  • Log pembacaan file:

    Setelah Platform IoT merespons dan memicu callback, log pembacaan file adalah:

    • 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******
      ......
      ......
      ......
  • Log pemantauan status unggah:

    Setelah unggah selesai, Platform IoT mengembalikan informasi status:

    • mqttuploadfile001.txt

      Catatan

      File ini menggunakan validasi integritas CRC64, sehingga log mencakup nilai CRC64 yang divalidasi.

      [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
  • Log keluar program:

    Setelah unggah selesai, program berhenti berlangganan dari topik terkait dan keluar.

    [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

Log Platform IoT

Kelola file yang diunggah dan lihat log waktu proses di Konsol Platform IoT.

  • Untuk melihat file yang diunggah, buka Devices > Devices. Klik View untuk perangkat target, lalu pilih tab File Management.

    Daftar file menampilkan nama file, ukuran, waktu unggah, dan operasi. Anda dapat Download atau Delete file yang diunggah.

    Kelola file.

  • Di panel navigasi sebelah kiri, buka Monitoring and O&M > Log Service. Pilih produk terkait untuk melihat log unggah file perangkat.

    Di tab Cloud-side Runtime Log, daftar log menampilkan Time, TraceID, Message Content, DeviceName, Business Type, Operation, Content, dan Status. Untuk unggah file perangkat, jenis bisnis adalah Device File Upload dan operasi adalah FileUploadFinished. Status 200 menunjukkan keberhasilan.

Langkah selanjutnya

  • Setelah mengonfigurasi file contoh, kompilasi file tersebut untuk membuat file yang dapat dieksekusi ./output/mqtt-upload-basic-demo. Kompilasi dan jalankan demo.

  • Untuk memecahkan masalah pesan kesalahan dalam log waktu proses, periksa deskripsi kode status di aiot_mqtt_upload_api.h.