全部产品
Search
文档中心

Object Storage Service:Simple upload (C++ SDK)

更新时间:Nov 30, 2025

Topik ini menjelaskan cara mengunggah file (objek) dari memori atau disk lokal.

Catatan penggunaan

  • Pada topik ini, digunakan 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 ingin membuat OSSClient menggunakan nama domain kustom atau Security Token Service (STS), lihat Create an OssClient instance.

Permissions

Secara default, Akun Alibaba Cloud memiliki izin penuh. Pengguna RAM atau Peran RAM di bawah Akun Alibaba Cloud tidak memiliki izin apa pun secara default. Akun Alibaba Cloud atau administrator akun harus memberikan izin operasi melalui RAM Policy atau Bucket policies.

API

Action

Definition

PutObject

oss:PutObject

Mengunggah objek.

oss:PutObjectTagging

Saat mengunggah objek, jika Anda menentukan tag objek melalui x-oss-tagging, izin ini diperlukan.

kms:GenerateDataKey

Saat mengunggah objek, jika metadata objek berisi X-Oss-Server-Side-Encryption: KMS, kedua izin ini diperlukan.

kms:Decrypt

Unggah file dari memori

Kode berikut menunjukkan cara mengunggah konten dari memori ke bucket examplebucket. Konten tersebut disimpan sebagai file exampleobject.txt di folder exampledir.

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

int main(void)
{
    /* Inisialisasi informasi akun OSS. */
            
    /* Tetapkan yourEndpoint ke Endpoint wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), tetapkan Endpoint ke https://oss-cn-hangzhou.aliyuncs.com. */
    std::string Endpoint = "yourEndpoint";
    /* Tetapkan yourRegion ke wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), tetapkan wilayah ke cn-hangzhou. */
    std::string Region = "yourRegion";
    /* Masukkan nama bucket. Misalnya, examplebucket. */
    std::string BucketName = "examplebucket";
    /* Masukkan 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 ditetapkan. */
    auto credentialsProvider = std::make_shared<EnvironmentVariableCredentialsProvider>();
    OssClient client(Endpoint, credentialsProvider, conf);
    client.SetRegion(Region);
    std::shared_ptr<std::iostream> content = std::make_shared<std::stringstream>();
    *content << "Thank you for using Alibaba Cloud Object Storage Service!";
    PutObjectRequest request(BucketName, ObjectName, content);

    /* (Opsional) Contoh berikut menunjukkan cara menetapkan daftar kontrol akses (ACL) ke private dan kelas penyimpanan ke Standard. */
    //request.MetaData().addHeader("x-oss-object-acl", "private");
    //request.MetaData().addHeader("x-oss-storage-class", "Standard");

    /* Unggah file. */
    auto outcome = client.PutObject(request);

    if (!outcome.isSuccess()) {
        /* Tangani pengecualian. */
        std::cout << "PutObject fail" <<
        ",code:" << outcome.error().Code() <<
        ",message:" << outcome.error().Message() <<
        ",requestId:" << outcome.error().RequestId() << std::endl;
        return -1;
    }

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

Unggah file lokal

Kode berikut menunjukkan cara mengunggah file examplefile.txt dari direktori D:\\localpath ke bucket examplebucket. File tersebut disimpan sebagai file exampleobject.txt di folder exampledir.

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

int main(void)
{
    /* Inisialisasi informasi akun OSS. */
            
    /* Tetapkan yourEndpoint ke Endpoint wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), tetapkan Endpoint ke https://oss-cn-hangzhou.aliyuncs.com. */
    std::string Endpoint = "yourEndpoint";
    /* Tetapkan yourRegion ke wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), tetapkan wilayah ke cn-hangzhou. */
    std::string Region = "yourRegion";
    /* Masukkan nama bucket. Misalnya, examplebucket. */
    std::string BucketName = "examplebucket";
    /* Masukkan 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 ditetapkan. */
    auto credentialsProvider = std::make_shared<EnvironmentVariableCredentialsProvider>();
    OssClient client(Endpoint, credentialsProvider, conf);
    client.SetRegion(Region);
    /* Masukkan path lengkap file lokal. Misalnya, D:\\localpath\\examplefile.txt. Pada contoh ini, localpath adalah direktori lokal tempat file examplefile.txt disimpan. */
    std::shared_ptr<std::iostream> content = std::make_shared<std::fstream>("D:\\localpath\\examplefile.txt", std::ios::in | std::ios::binary);
    PutObjectRequest request(BucketName, ObjectName, content);

    /* (Opsional) Contoh berikut menunjukkan cara menetapkan daftar kontrol akses (ACL) ke private dan kelas penyimpanan ke Standard. */
    //request.MetaData().addHeader("x-oss-object-acl", "private");
    //request.MetaData().addHeader("x-oss-storage-class", "Standard");

    auto outcome = client.PutObject(request);

    if (!outcome.isSuccess()) {
        /* Tangani pengecualian. */
        std::cout << "PutObject fail" <<
        ",code:" << outcome.error().Code() <<
        ",message:" << outcome.error().Message() <<
        ",requestId:" << outcome.error().RequestId() << std::endl;
        return -1;
    }

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

Referensi

  • Untuk kode contoh lengkap mengenai simple upload, lihat GitHub.

  • Untuk informasi selengkapnya mengenai operasi API untuk simple upload, lihat PutObject.