全部产品
Search
文档中心

ApsaraVideo VOD:Gunakan upload SDK untuk C/C++

更新时间:Nov 05, 2025

Topik ini menjelaskan cara menggunakan upload SDK server untuk C atau C++ guna mengunggah file media ke ApsaraVideo VOD.

Proses unggah

Upload SDK untuk C atau C++ mengikuti proses umum dari SDK ApsaraVideo VOD. Untuk informasi lebih lanjut, lihat Proses Unggah. Berikut adalah deskripsi proses dasar menggunakan upload SDK server untuk C atau C++:

  1. Lengkapi konfigurasi sesuai dengan bagian Prasyarat.

  2. Integrasi upload SDK server untuk C atau C++. Untuk informasi lebih lanjut, lihat Integrasi upload SDK server untuk C atau C++.

  3. Konfigurasikan informasi unggah untuk menerapkan logika unggah.

Prasyarat

  • ApsaraVideo VOD telah diaktifkan. Untuk informasi lebih lanjut, lihat Aktivasi ApsaraVideo VOD.

  • Pengaturan sistem yang diperlukan untuk unggah, termasuk jalur penyimpanan di wilayah tertentu dan pengaturan callback, telah dikonfigurasi. Untuk informasi lebih lanjut, lihat Kelola bucket penyimpanan dan Konfigurasi callback.

  • Pengguna RAM dibuat dan digunakan untuk mengakses ApsaraVideo VOD. Untuk mencegah risiko keamanan akibat kebocoran Pasangan Kunci Akses Akun Alibaba Cloud Anda, kami menyarankan Anda membuat Pengguna RAM dan memberikan izin kepada Pengguna RAM untuk mengakses ApsaraVideo VOD. Kemudian, Anda dapat menggunakan Pasangan Kunci Akses dari Pengguna RAM untuk mengakses ApsaraVideo VOD. Untuk informasi lebih lanjut, lihat Buat dan berikan izin kepada Pengguna RAM.

  • Konfigurasikan variabel lingkungan ALIBABA_CLOUD_ACCESS_KEY_ID dan ALIBABA_CLOUD_ACCESS_KEY_SECRET. Untuk informasi lebih lanjut, lihat Konfigurasi variabel lingkungan di Linux, macOS, dan Windows.

    Penting
    • Pasangan Kunci Akses Akun Alibaba Cloud memiliki izin pada semua operasi API. Kami menyarankan Anda menggunakan Pasangan Kunci Akses Pengguna RAM untuk memanggil operasi API atau melakukan pemeliharaan rutin.

    • Kami menyarankan Anda tidak menyematkan ID Kunci Akses dan rahasia Kunci Akses ke dalam kode proyek Anda. Jika tidak, Pasangan Kunci Akses mungkin bocor dan keamanan semua sumber daya dalam akun Anda terancam.

  • Opsional. Peran dibuat untuk Pengguna RAM dan peran tersebut diberikan izin yang diperlukan untuk mengakses ApsaraVideo VOD jika Anda ingin mengakses ApsaraVideo VOD menggunakan Layanan Token Keamanan (STS). Untuk informasi lebih lanjut, lihat Dapatkan token STS.

    Catatan

    Untuk informasi lebih lanjut tentang skenario di mana STS dapat digunakan, lihat Perbandingan antara kredensial dan STS.

Integrasi upload SDK server untuk C atau C++

Catatan
  • Upload SDK server untuk C atau C++ hanya dapat diinstal di sistem operasi Linux.

  • Dalam contoh ini, SDK versi 1.0.0 digunakan. Anda dapat menggunakan versi lain berdasarkan kebutuhan bisnis Anda.

  • Untuk informasi lebih lanjut tentang direktori upload SDK server untuk C atau C++ dan kode contoh, lihat Direktori.

  • Topik ini menjelaskan cara menginstal upload SDK server untuk C atau C++ sebagai pengguna non-root dan memberikan contoh perintah instalasi.

Tabel berikut menjelaskan paket perangkat lunak yang diperlukan, penggunaannya, serta contoh instalasi.

Paket perangkat lunak

Deskripsi

Instalasi dengan YUM

Instalasi dengan paket yang diunduh melalui Internet

CMake

Kompiler pihak ketiga.

  • Versi: V2.6.0 atau lebih baru

  • Kode contoh:

    sudo yum install cmake
  • Tautan unduhan: CMake

  • Kode contoh:

    ./configure
    make
    make install

libcurl

Mendeteksi masalah koneksi jaringan.

  • Versi: V7.29.0 atau lebih baru

  • Kode contoh:

    sudo yum install libcurl-devel
  • Tautan unduhan: libcurl

  • Kode contoh:

    ./configure
    make
    make install

libuuid

Membuat UUID.

Kode contoh:

sudo yum install libuuid-devel

N/A

apr

N/A

Kode contoh:

sudo yum install apr-devel
  • Tautan unduhan: apr

  • Kode contoh:

    ./configure
    make
    make install

apr-util

Mengelola penggunaan memori dan masalah lintas platform.

Kode contoh:

sudo yum install apr-util
  • Tautan unduhan: apr-util

  • Kode contoh:

    // Tentukan parameter with-apr saat Anda menginstal paket. 
    ./configure --with-apr=/your/apr/install/path
    make
    make install

minixml

Mengurai data yang dikembalikan dalam format XML.

Kode contoh:

sudo yum install mxml mxml-devel
  • Tautan unduhan: minixml

  • Kode contoh:

    ./configure
    make
    make install

jsoncpp

Mengurai data yang dikembalikan dalam format JSON.

Kode contoh:

sudo yum install jsoncpp-devel
  • Tautan unduhan: jsoncpp

  • Kode contoh:

    ./configure
    make
    make install

OSS SDK

Sebelum Anda menggunakan upload SDK server untuk C atau C++, Anda harus mengunduh dan menginstal Object Storage Service (OSS) SDK untuk C atau C++.

N/A

Untuk informasi lebih lanjut tentang tautan unduhan dan prosedur instalasi, lihat Instalasi.

Penting

Jika beberapa dependensi OSS telah diinstal, Anda tidak perlu menginstalnya lagi.

Upload SDK untuk C atau C++

Mengunggah file media.

N/A

  • Kode contoh:

cmake .
make
make install

Direktori

/VodSDK-C_1.0.0.gz/VodSDK-C_1.0.0/aliyun-c-sdk-vod/src/upload.h

Direktori

Deskripsi

CreateUploadVideoRequest

Kelas permintaan untuk unggah video. Untuk informasi lebih lanjut tentang parameter, lihat CreateUploadVideo.

CreateUploadImageRequest

Kelas permintaan untuk unggah gambar. Untuk informasi lebih lanjut tentang parameter, lihat CreateUploadImage.

CreateUploadAttachedMediaRequest

Kelas permintaan untuk unggah aset media pendukung. Untuk informasi lebih lanjut tentang parameter, lihat CreateUploadAttachedMedia.

UploadOptions

Struktur parameter unggah. Berikut ini adalah deskripsi parameter.

  • void (*uploadProgressCallback) (int64_t, int64_t): mengonfigurasi fungsi callback untuk kemajuan unggah. Jika Anda tidak menyetel parameter ini, konfigurasi callback default akan digunakan. Jika Anda menyetel parameter ini ke NULL, tidak ada callback untuk kemajuan unggah yang dipanggil.

  • ecsRegionId: menentukan wilayah instance ECS tempat skrip unggah diterapkan. Jika wilayah ECS sama dengan wilayah penyimpanan ApsaraVideo VOD, file secara otomatis diunggah melalui jaringan internal.

  • multipartUploadLimit: menentukan batas ukuran file untuk unggah multipart. Satuan: byte. Nilai default: 10 MB. Parameter ini hanya valid untuk unggah video.

  • multipartUploadOnceSize: menentukan ukuran setiap bagian dalam unggah multipart. Satuan: byte. Nilai default: 10 MB. Parameter ini hanya valid untuk unggah video.

  • tmpDir: menentukan direktori lokal untuk menyimpan file sementara. Parameter ini hanya valid untuk unggah file online.

uploadLocalVideo

Operasi API yang digunakan untuk mengunggah video lokal.

uploadWebVideo

Operasi API yang digunakan untuk mengunggah video online.

uploadLocalImage

Operasi API yang digunakan untuk mengunggah gambar lokal.

uploadWebImage

Operasi API yang digunakan untuk mengunggah gambar online.

uploadLocalAttachedMedia

Operasi API yang digunakan untuk mengunggah aset media pendukung lokal.

uploadWebAttachedMedia

Operasi API yang digunakan untuk mengunggah aset media pendukung online.

uploadLocalM3u8

Operasi API yang digunakan untuk mengunggah video M3U8 lokal.

uploadWebM3u8

Operasi API yang digunakan untuk mengunggah video M3U8 online.

/VodSDK-C_1.0.0.gz/VodSDK-C_1.0.0/aliyun-c-sdk-vod/samples

Direktori

Deskripsi

uploadVideo.cpp

Kode contoh untuk mengunggah video.

uploadImage.cpp

Kode contoh untuk mengunggah gambar.

uploadAttachedMedia.cpp

Kode contoh untuk mengunggah aset media pendukung.

Skenario 1: Unggah file audio dan video

File audio dan video reguler

ApsaraVideo VOD memungkinkan Anda mengunggah file audio atau video menggunakan salah satu metode berikut:

  • Gunakan unggah multipart untuk mengunggah file lokal. Anda dapat mengunggah file dengan ukuran hingga 48,8 TB. Unggah berkelanjutan tidak didukung. Untuk informasi lebih lanjut, lihat fungsi testUploadLocalVideo dalam kode contoh.

  • Gunakan URL file untuk mengunggah file online. Anda dapat mengunggah file dengan ukuran hingga 48,8 TB. Sebelum mengunggah file online, Anda harus mengunduh file ke disk lokal. Pastikan disk lokal memiliki ruang yang cukup. Untuk informasi lebih lanjut, lihat fungsi testUploadWebVideo dalam kode contoh berikut.

Tampilkan kode contoh

void testCallback(int64_t consumed_bytes, int64_t total_bytes)
{
    printf("total :%ld, %ld\n", consumed_bytes, total_bytes);
}
// Tes unggah video lokal.
VodApiResponse testUploadLocalVideo(VodCredential authInfo) {
    CreateUploadVideoRequest request;
    // Nama file sumber.
    request.fileName = "test.mp4";
    // Judul video.
    request.title = "testVideo****";
    // ID kategori video.
    request.cateId = "1";
    // URL thumbnail video kustom. Contoh: http://example.com/example-****.jpg.
    request.coverURL = "<your cover URL>";
    // Tag video.
    request.tags = "test1,test2";
    // ID kelompok template transkoding.
    request.templateGroupId = "6ae347b0140181ad371d197ebe28****";
    // Lokasi penyimpanan. Contoh: example-bucket-****.oss-cn-shanghai.aliyuncs.com.
    requests.storageLocation = "<your torageLocation>";
    Json::Value userData;
    Json::Value callbackUrl;
    // URL callback. Contoh: https://example.aliyundoc.com/ProcessMessageCallback.
    callbackUrl["CallbackURL"] = "<your callback URL>";
    userData["MessageCallback"] = callbackUrl;
    Json::Value extend;
    extend["localId"] = "xxx";
    extend["test"] = "www";
    userData["Extend"] = extend;
    request.userData = userData.toStyledString();
    UploadOptions uploadOptions;
    // Tentukan wilayah instance ECS tempat skrip unggah diterapkan. Jika wilayah ECS sama dengan wilayah penyimpanan ApsaraVideo VOD, file secara otomatis diunggah melalui jaringan internal.
    //uploadOptions.ecsRegionId = "cn-shanghai";
    // Konfigurasikan fungsi callback untuk kemajuan unggah. Jika Anda tidak menyetel parameter ini, konfigurasi callback default akan digunakan. Jika Anda menyetel parameter ini ke NULL, tidak ada callback untuk kemajuan unggah yang dipanggil.
    //uploadOptions.uploadProgressCallback = testCallback;
    //uploadOptions.multipartUploadLimit = 20*1024*1024;// Tentukan batas ukuran file untuk unggah multipart.
    //uploadOptions.multipartUploadOnceSize = 10*1024*1024;// Tentukan ukuran setiap bagian dalam unggah multipart.
    VodApiResponse result = uploadLocalVideo(authInfo, request, "./test.mp4", uploadOptions);
    return result;
}
// Tes unggah video online.
VodApiResponse testUploadWebVideo(VodCredential authInfo) {
    CreateUploadVideoRequest request;
    request.fileName = "testWeb****.mp4";
    request.title = "testUploadWebVideo****";
    UploadOptions uploadOptions;
    // Tentukan wilayah instance ECS tempat skrip unggah diterapkan. Jika wilayah ECS sama dengan wilayah penyimpanan ApsaraVideo VOD, file secara otomatis diunggah melalui jaringan internal.
    //uploadOptions.ecsRegionId = "cn-shanghai";
    // Konfigurasikan fungsi callback untuk kemajuan unggah. Jika Anda tidak menyetel parameter ini, konfigurasi callback default akan digunakan. Jika Anda menyetel parameter ini ke NULL, tidak ada callback untuk kemajuan unggah yang dipanggil.
    //uploadOptions.uploadProgressCallback = testCallback;
    //uploadOptions.multipartUploadLimit = 20*1024*1024;// Tentukan batas ukuran file untuk unggah multipart.
    //uploadOptions.multipartUploadOnceSize = 10*1024*1024;// Tentukan ukuran setiap bagian dalam unggah multipart.
    // Tentukan direktori lokal untuk menyimpan file online yang diunduh sementara. Nilai default: /tmp/.
    //uploadOptions.tmpDir = "/tmp/";
    VodApiResponse result = uploadWebVideo(authInfo, request, "<Your Download Url>", uploadOptions);
    return result;
}

####  Jalankan kode tes.   ####
VodCredential initVodClient(std::string accessKeyId, std::string accessKeySecret) {
    VodCredential authInfo;
    authInfo.accessKeyId = accessKeyId;
    authInfo.accessKeySecret = accessKeySecret;
    authInfo.regionId = "cn-shanghai";
    return authInfo;
}
int main(int argc, char * argv[]) {
    // Pasangan Kunci Akses akun Alibaba Cloud memiliki izin pada semua operasi API. Kami menyarankan Anda menggunakan pengguna RAM untuk memanggil operasi API atau melakukan pemeliharaan rutin. 
    // Kami menyarankan Anda tidak menyertakan pasangan Kunci Akses (ID Kunci Akses dan rahasia Kunci Akses) dalam kode proyek Anda. Jika tidak, pasangan Kunci Akses mungkin bocor dan keamanan semua sumber daya dalam akun Anda terancam. 
    // Dalam contoh ini, ApsaraVideo VOD membaca pasangan Kunci Akses dari variabel lingkungan untuk menerapkan verifikasi identitas untuk akses API. Sebelum Anda menjalankan kode contoh, konfigurasikan variabel lingkungan ALIBABA_CLOUD_ACCESS_KEY_ID dan ALIBABA_CLOUD_ACCESS_KEY_SECRET. 
    VodCredential authInfo = initVodClient(std:getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"), std:getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"));
    VodApiResponse response;
    response = testUploadLocalVideo(authInfo);
    //response = testUploadWebVideo(authInfo);
    //response = testUploadLocalM3u8(authInfo);
    //response = testUploadWebM3u8(authInfo);
    printf("httpCode: %d, result: %s\n", response.httpCode, response.result.c_str());
}

File M3U8

Tampilkan kode contoh

void testCallback(int64_t consumed_bytes, int64_t total_bytes)
{
    printf("total :%ld, %ld\n", consumed_bytes, total_bytes);
}
// Tes unggah video M3U8 lokal.
VodApiResponse testUploadLocalM3u8(VodCredential authInfo) {
    CreateUploadVideoRequest request;
    // Nama file sumber.
    request.fileName = "testLocal****.m3u8";
    // Judul video.
    request.title = "testUploadLocalM3u8****";
    list<string> tsList;
    // Jika Anda tidak menentukan URL file bagian, file akan diurai secara otomatis.
    //tsList.push_back("/tmp/1.ts");
    UploadOptions uploadOptions;
    VodApiResponse result = uploadLocalM3u8(authInfo, request, "./test****.m3u8", tsList, uploadOptions);
    return result;
}
// Tes unggah video M3U8 online.
VodApiResponse testUploadWebM3u8(VodCredential authInfo) {
    CreateUploadVideoRequest request;
    // Nama file sumber.
    request.fileName = "testWeb****.m3u8";
    // Judul video.
    request.title = "testUploadWebM3u8****";
    list<string> tsList;
    // Jika Anda tidak menentukan URL file bagian, file akan diurai secara otomatis.
    //tsList.push_back("<Ts1 Download Url>");
    //tsList.push_back("<Ts2 Download Url>");
    UploadOptions uploadOptions;
    VodApiResponse result = uploadWebM3u8(authInfo, request, "<Your M3u8 Download Url>", tsList, uploadOptions);
    return result;
}
####  Jalankan kode tes.   ####
VodCredential initVodClient(std::string accessKeyId, std::string accessKeySecret) {
    VodCredential authInfo;
    authInfo.accessKeyId = accessKeyId;
    authInfo.accessKeySecret = accessKeySecret;
    authInfo.regionId = "cn-shanghai";
    return authInfo;
}
int main(int argc, char * argv[]) {
    // Pasangan Kunci Akses akun Alibaba Cloud memiliki izin pada semua operasi API. Kami menyarankan Anda menggunakan pengguna RAM untuk memanggil operasi API atau melakukan pemeliharaan rutin. 
    // Kami menyarankan Anda tidak menyertakan pasangan Kunci Akses (ID Kunci Akses dan rahasia Kunci Akses) dalam kode proyek Anda. Jika tidak, pasangan Kunci Akses mungkin bocor dan keamanan semua sumber daya dalam akun Anda terancam. 
    // Dalam contoh ini, ApsaraVideo VOD membaca pasangan Kunci Akses dari variabel lingkungan untuk menerapkan verifikasi identitas untuk akses API. Sebelum Anda menjalankan kode contoh, konfigurasikan variabel lingkungan ALIBABA_CLOUD_ACCESS_KEY_ID dan ALIBABA_CLOUD_ACCESS_KEY_SECRET. 
    VodCredential authInfo = initVodClient(std:getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"), std:getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"));
    VodApiResponse response;
    response = testUploadLocalVideo(authInfo);
    //response = testUploadWebVideo(authInfo);
    //response = testUploadLocalM3u8(authInfo);
    //response = testUploadWebM3u8(authInfo);
    printf("httpCode: %d, result: %s\n", response.httpCode, response.result.c_str());
}

Skenario 2: Unggah gambar

Tampilkan kode contoh

void testCallback(int64_t consumed_bytes, int64_t total_bytes)
{
    printf("total :%ld, %ld\n", consumed_bytes, total_bytes);
}

VodApiResponse testUploadLocalImage(VodCredential authInfo)
{
    CreateUploadImageRequest request;
    // Jenis gambar.
    request.imageType = "default";
    // Judul gambar.
    request.title = "testUploadLocalImage";
    UploadOptions uploadOptions;
    // Tentukan wilayah instance ECS tempat skrip unggah diterapkan. Jika wilayah ECS sama dengan wilayah penyimpanan ApsaraVideo VOD, file secara otomatis diunggah melalui jaringan internal.
    //uploadOptions.ecsRegionId = "cn-shanghai";
    // Konfigurasikan fungsi callback untuk kemajuan unggah. Jika Anda tidak menyetel parameter ini, konfigurasi callback default akan digunakan. Jika Anda menyetel parameter ini ke NULL, tidak ada callback untuk kemajuan unggah yang dipanggil.
    //uploadOptions.uploadProgressCallback = testCallback;
    VodApiResponse result = uploadLocalImage(authInfo, request, "./test.png", uploadOptions);
    return result;
}

VodApiResponse testUploadWebImage(VodCredential authInfo) {
    CreateUploadImageRequest request;
    request.imageType = "default";
    request.title = "testUploadWebImage";
    UploadOptions uploadOptions;
    // Tentukan wilayah instance ECS tempat skrip unggah diterapkan. Jika wilayah ECS sama dengan wilayah penyimpanan ApsaraVideo VOD, file secara otomatis diunggah melalui jaringan internal.
    //uploadOptions.ecsRegionId = "cn-shanghai";
    // Konfigurasikan fungsi callback untuk kemajuan unggah. Jika Anda tidak menyetel parameter ini, konfigurasi callback default akan digunakan. Jika Anda menyetel parameter ini ke NULL, tidak ada callback untuk kemajuan unggah yang dipanggil.
    //uploadOptions.uploadProgressCallback = testCallback;
    // Tentukan direktori lokal untuk menyimpan file online yang diunduh sementara. Nilai default: /tmp/.
    //uploadOptions.tmpDir = "/tmp/";
    VodApiResponse result = uploadWebImage(authInfo, request, "<Your Download Url>", uploadOptions);
    return result;
}

VodCredential initVodClient(std::string accessKeyId, std::string accessKeySecret) {
    VodCredential authInfo;
    authInfo.accessKeyId = accessKeyId;
    authInfo.accessKeySecret = accessKeySecret;
    authInfo.regionId = "cn-shanghai";
    return authInfo;
}

Tampilkan kode contoh

int main(int argc, char * argv[]) {
    // Pasangan Kunci Akses akun Alibaba Cloud memiliki izin pada semua operasi API. Kami menyarankan Anda menggunakan pengguna RAM untuk memanggil operasi API atau melakukan pemeliharaan rutin. 
    // Kami menyarankan Anda tidak menyertakan pasangan Kunci Akses (ID Kunci Akses dan rahasia Kunci Akses) dalam kode proyek Anda. Jika tidak, pasangan Kunci Akses mungkin bocor dan keamanan semua sumber daya dalam akun Anda terancam. 
    // Dalam contoh ini, ApsaraVideo VOD membaca pasangan Kunci Akses dari variabel lingkungan untuk menerapkan verifikasi identitas untuk akses API. Sebelum Anda menjalankan kode contoh, konfigurasikan variabel lingkungan ALIBABA_CLOUD_ACCESS_KEY_ID dan ALIBABA_CLOUD_ACCESS_KEY_SECRET. 
    VodCredential authInfo = initVodClient(std:getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"), std:getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"));
    VodApiResponse response;

    response = testUploadLocalImage(authInfo);
    //response = testUploadWebImage(authInfo);
    printf("httpCode: %d, result: %s\n", response.httpCode, response.result.c_str());
}

Skenario 3: Unggah aset media pendukung

Tampilkan kode contoh

void testCallback(int64_t consumed_bytes, int64_t total_bytes)
{
    printf("total :%ld, %ld\n", consumed_bytes, total_bytes);
}

VodApiResponse testUploadLocalAttachedMedia(VodCredential authInfo)
{
    CreateUploadAttachedMediaRequest request;
    // Jenis aset media pendukung.
    request.businessType = "watermark";'
    // Ekstensi nama file.
    request.mediaExt = "png";
    // Judul aset media pendukung.
    request.title = "testUploadLocalAttachedMedia";
    UploadOptions uploadOptions;
    // Tentukan wilayah instance ECS tempat skrip unggah diterapkan. Jika wilayah ECS sama dengan wilayah penyimpanan ApsaraVideo VOD, file secara otomatis diunggah melalui jaringan internal.
    //uploadOptions.ecsRegionId = "cn-shanghai";
    // Konfigurasikan fungsi callback untuk kemajuan unggah. Jika Anda tidak menyetel parameter ini, konfigurasi callback default akan digunakan. Jika Anda menyetel parameter ini ke NULL, tidak ada callback untuk kemajuan unggah yang dipanggil.
    //uploadOptions.uploadProgressCallback = testCallback;
    return uploadLocalAttachedMedia(authInfo, request, "./test.png", uploadOptions);
}

VodApiResponse testUploadWebAttachedMedia(VodCredential authInfo)
{
    CreateUploadAttachedMediaRequest request;
    // Jenis aset media pendukung.
    request.businessType = "watermark";
    // Ekstensi nama file.
    request.mediaExt = "png";
    // Judul aset media pendukung.
    request.title = "testUploadWebAttachedMedia";
    UploadOptions uploadOptions;
    // Tentukan wilayah instance ECS tempat skrip unggah diterapkan. Jika wilayah ECS sama dengan wilayah penyimpanan ApsaraVideo VOD, file secara otomatis diunggah melalui jaringan internal.
    //uploadOptions.ecsRegionId = "cn-shanghai";
    // Konfigurasikan fungsi callback untuk kemajuan unggah. Jika Anda tidak menyetel parameter ini, konfigurasi callback default akan digunakan. Jika Anda menyetel parameter ini ke NULL, tidak ada callback untuk kemajuan unggah yang dipanggil.
    //uploadOptions.uploadProgressCallback = testCallback;
    // Tentukan direktori lokal untuk menyimpan file online yang diunduh sementara. Nilai default: /tmp/.
    //uploadOptions.tmpDir = "/tmp/";
    return uploadWebAttachedMedia(authInfo, request, "<Your Download Url>", uploadOptions);
}

VodCredential initVodClient(std::string accessKeyId, std::string accessKeySecret) {
    VodCredential authInfo;
    authInfo.accessKeyId = accessKeyId;
    authInfo.accessKeySecret = accessKeySecret;
    authInfo.regionId = "cn-shanghai";
    return authInfo;
}

Tampilkan kode contoh

int main(int argc, char * argv[]) {
    // Pasangan Kunci Akses akun Alibaba Cloud memiliki izin pada semua operasi API. Kami menyarankan Anda menggunakan pengguna RAM untuk memanggil operasi API atau melakukan pemeliharaan rutin. 
    // Kami menyarankan Anda tidak menyertakan pasangan Kunci Akses (ID Kunci Akses dan rahasia Kunci Akses) dalam kode proyek Anda. Jika tidak, pasangan Kunci Akses mungkin bocor dan keamanan semua sumber daya dalam akun Anda terancam. 
    // Dalam contoh ini, ApsaraVideo VOD membaca pasangan Kunci Akses dari variabel lingkungan untuk menerapkan verifikasi identitas untuk akses API. Sebelum Anda menjalankan kode contoh, konfigurasikan variabel lingkungan ALIBABA_CLOUD_ACCESS_KEY_ID dan ALIBABA_CLOUD_ACCESS_KEY_SECRET. 
    VodCredential authInfo = initVodClient(std:getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"), std:getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"));
    VodApiResponse response;
    response = testUploadLocalAttachedMedia(authInfo);
    //response = testUploadWebAttachedMedia(authInfo);
    printf("httpCode: %d, result: %s\n", response.httpCode, response.result.c_str());
}