All Products
Search
Document Center

Object Storage Service:Pembatasan bandwidth koneksi tunggal (C++ SDK)

Last Updated:Nov 30, 2025

Topik ini menjelaskan cara menambahkan parameter dalam permintaan unggah atau unduh objek untuk mengatur batas bandwidth unggah atau unduh, sehingga memastikan tersedianya bandwidth yang cukup bagi aplikasi lain.

Catatan penggunaan

  • Topik ini menggunakan titik akhir publik wilayah China (Hangzhou). Jika Anda mengakses OSS dari layanan Alibaba Cloud lain yang berada di wilayah yang sama dengan OSS, gunakan titik akhir internal. Untuk informasi selengkapnya mengenai wilayah dan titik akhir OSS, lihat Regions and endpoints.

  • Pada topik ini, instans OSSClient dibuat menggunakan titik akhir OSS. Jika Anda ingin membuat OSSClient menggunakan nama domain kustom atau Security Token Service (STS), lihat Create an OssClient instance.

Konfigurasikan pembatasan bandwidth koneksi tunggal untuk unggah dan unduh simple

Kode contoh berikut menunjukkan cara mengonfigurasi pembatasan bandwidth koneksi tunggal untuk unggah dan unduh simple:

#include <alibabacloud/oss/OssClient.h>
#include <fstream>
using namespace AlibabaCloud::OSS;

int main(void)
{
    /* Inisialisasi informasi akun OSS. */
    
    /* Tetapkan yourEndpoint ke titik akhir wilayah tempat bucket berada. Misalnya, untuk wilayah China (Hangzhou), tetapkan titik akhir ke https://oss-cn-hangzhou.aliyuncs.com. */
    std::string Endpoint = "yourEndpoint";
    /* Tetapkan yourRegion ke wilayah tempat bucket berada. Misalnya, untuk wilayah China (Hangzhou), tetapkan wilayah ke cn-hangzhou. */
    std::string Region = "yourRegion";
    /* Tentukan nama bucket, misalnya examplebucket. */
    std::string BucketName = "examplebucket";
    /* Tentukan path lengkap objek. Path lengkap tidak boleh mengandung nama bucket. Misalnya, exampledir/exampleobject.txt. */
    std::string ObjectName = "exampledir/exampleobject.txt";

    /* Inisialisasi sumber daya jaringan. */
    InitializeSdk();

    ClientConfiguration conf;
    conf.signatureVersion = SignatureVersionType::V4;
    /* Dapatkan kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh ini, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah disetel. */
    auto credentialsProvider = std::make_shared<EnvironmentVariableCredentialsProvider>();
    OssClient client(Endpoint, credentialsProvider, conf);
    client.SetRegion(Region);

    /* Unggah file. */
    std::shared_ptr<std::iostream> content = std::make_shared<std::fstream>("yourLocalFilename", std::ios::in|std::ios::binary);
    PutObjectRequest putrequest(BucketName, ObjectName,content);
    /* Tetapkan batas bandwidth unggah ke 100 KB/s. */
    putrequest.setTrafficLimit(819200);
    auto putoutcome = client.PutObject(putrequest);

    /* Unduh file ke memori lokal. */
    GetObjectRequest getrequest(BucketName, ObjectName);
    /* Tetapkan batas bandwidth unduh ke 100 KB/s. */
    getrequest.setTrafficLimit(819200);
    auto getoutcome = client.GetObject(getrequest);

    /* Lepaskan sumber daya jaringan. */
    ShutdownSdk();
    return 0;
}

Konfigurasikan pembatasan bandwidth untuk unggah dan unduh yang menggunakan signed URL

Kode contoh berikut menunjukkan cara mengonfigurasi pembatasan bandwidth koneksi tunggal saat menggunakan signed URL untuk mengunggah atau mengunduh objek:

#include <alibabacloud/oss/OssClient.h>
#include <fstream>
using namespace AlibabaCloud::OSS;
int main(void)
{
    /* Inisialisasi informasi akun OSS. */
    
    /* Tetapkan yourEndpoint ke titik akhir wilayah tempat bucket berada. Misalnya, untuk wilayah China (Hangzhou), tetapkan titik akhir ke https://oss-cn-hangzhou.aliyuncs.com. */
    std::string Endpoint = "yourEndpoint";
    /* Tetapkan yourRegion ke wilayah tempat bucket berada. Misalnya, untuk wilayah China (Hangzhou), tetapkan wilayah ke cn-hangzhou. */
    std::string Region = "yourRegion";
    /* Tentukan nama bucket, misalnya examplebucket. */
    std::string BucketName = "examplebucket";
    /* Tentukan path lengkap objek. Path lengkap tidak boleh mengandung nama bucket. Misalnya, exampledir/exampleobject.txt. */
    std::string ObjectName = "exampledir/exampleobject.txt"; 

    /* Inisialisasi sumber daya jaringan. */
    InitializeSdk();

    ClientConfiguration conf;
    conf.signatureVersion = SignatureVersionType::V4;
    /* Dapatkan kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh ini, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah disetel. */
    auto credentialsProvider = std::make_shared<EnvironmentVariableCredentialsProvider>();
    OssClient client(Endpoint, credentialsProvider, conf);
    client.SetRegion(Region);

    /* Tetapkan periode validitas signature. Periode validitas maksimum adalah 32.400 detik. */
    std::time_t expires = std::time(nullptr) + 1200; 
    /* Hasilkan URL untuk mengunggah file. */
    GeneratePresignedUrlRequest putrequest(BucketName, ObjectName, Http::Put);
    putrequest.setExpires(expires);
    /* Tetapkan batas bandwidth unggah ke 100 KB/s. */
    putrequest.setTrafficLimit(819200);
    auto genOutcome = client.GeneratePresignedUrl(putrequest);
    std::shared_ptr<std::iostream> content = std::make_shared<std::stringstream>();
    *content << "test cpp sdk";
    /* Cetak hasil signed URL untuk unggah. */
    std::cout << "Signed URL for upload: " << genOutcome.result() << std::endl;

    /* Gunakan signed URL untuk mengunggah file. */
    auto outcome = client.PutObjectByUrl(genOutcome.result(), content);
    /* Hasilkan URL untuk mengunduh file. */
    GeneratePresignedUrlRequest getrequest(BucketName, ObjectName, Http::Get);
    getrequest.setExpires(expires);
    /* Tetapkan batas bandwidth unduh ke 100 KB/s. */
    getrequest.setTrafficLimit(819200);
    genOutcome = client.GeneratePresignedUrl(getrequest);
    /* Cetak hasil signed URL untuk unduh. */
    std::cout << "Signed URL for download: " << genOutcome.result() << std::endl;
    /* Gunakan signed URL untuk mengunduh file. */
    auto goutcome = client.GetObjectByUrl(genOutcome.result());
    
    /* Lepaskan sumber daya jaringan. */
    ShutdownSdk();
    return 0;
}