Upload an object (C++ SDK V2)

更新时间:
复制 MD 格式

You can call the PutObject operation to upload a single object to OSS by using the OSS C++ SDK V2.

Usage notes

  • Before you run the sample code, replace <region> with an actual region, such as cn-hangzhou.

  • The sample code in this topic reads access credentials from environment variables.

  • Uploading an object requires the oss:PutObject permission.

  • Use a simple upload for objects up to 5 GB. For larger objects, use a multipart upload.

Sample code

Upload string content

The following sample code uploads string content to OSS:

#include <iostream>
#include "alibabacloud/oss2/ClientConfiguration.h"
#include "alibabacloud/oss2/OSSClient.h"
#include "alibabacloud/oss2/credentials/CredentialsProvider.h"

namespace oss = alibabacloud::oss2;

int main() {
    auto conf = oss::ClientConfiguration::loadDefault();
    conf.region = "<region>";
    conf.credentialsProvider = std::make_shared<oss::EnvironmentVariableCredentialsProvider>();

    oss::OSSClient client(conf);

    std::string data = "Hello OSS! This is a test content.";
    auto body = oss::RequestBody::fromString(data);

    auto outcome = client.putObject(
        oss::models::PutObjectRequest()
            .setBucket("examplebucket")
            .setKey("exampledir/exampleobject.txt")
            .setBody(body));

    if (!outcome.has_value()) {
        auto& e = outcome.error();
        std::cerr << "Failed to upload object"
                  << ", code: " << e.getCode()
                  << ", message: " << e.getMessage()
                  << ", requestId: " << e.getRequestId() << std::endl;
        return 1;
    }

    auto& result = outcome.value();
    std::cout << "Object uploaded successfully"
              << ", status: " << result.getStatusCode()
              << ", requestId: " << result.getRequestId()
              << ", hashCrc64ecma: " << result.getHashCrc64ecma() << std::endl;
    return 0;
}
          

Upload a local file

The following sample code uploads a local file to OSS:

#include <iostream>
#include "alibabacloud/oss2/ClientConfiguration.h"
#include "alibabacloud/oss2/OSSClient.h"
#include "alibabacloud/oss2/credentials/CredentialsProvider.h"

namespace oss = alibabacloud::oss2;

int main() {
    auto conf = oss::ClientConfiguration::loadDefault();
    conf.region = "<region>";
    conf.credentialsProvider = std::make_shared<oss::EnvironmentVariableCredentialsProvider>();

    oss::OSSClient client(conf);

    std::string filePath = "/path/to/localfile.txt";

    auto outcome = client.putObjectFromFile(
        oss::models::PutObjectRequest()
            .setBucket("examplebucket")
            .setKey("exampledir/exampleobject.txt"),
        filePath);

    if (!outcome.has_value()) {
        auto& e = outcome.error();
        std::cerr << "Failed to upload object"
                  << ", code: " << e.getCode()
                  << ", message: " << e.getMessage()
                  << ", requestId: " << e.getRequestId() << std::endl;
        return 1;
    }

    auto& result = outcome.value();
    std::cout << "Object uploaded successfully"
              << ", status: " << result.getStatusCode()
              << ", requestId: " << result.getRequestId()
              << ", hashCrc64ecma: " << result.getHashCrc64ecma() << std::endl;
    return 0;
}
          

References