Retrieve object metadata (C++ SDK V2)

更新时间:
复制 MD 格式

Object metadata includes an object's size, type, and last modified time. You can use the OSS C++ SDK V2 to retrieve the full or simplified metadata of an object.

Usage notes

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

  • The sample code uses environment variables to obtain access credentials.

  • To retrieve object metadata, you must have the oss:GetObject permission.

Examples

Retrieve full metadata (HeadObject)

The following code calls the HeadObject operation to retrieve the full metadata of an object:

#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);

    auto outcome = client.headObject(
        oss::models::HeadObjectRequest()
            .setBucket("examplebucket")
            .setKey("exampleobject.txt"));

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

    auto& result = outcome.value();
    std::cout << "Object metadata:"
              << "\n  Size (ContentLength): " << result.getContentLength()
              << "\n  Type (ContentType): " << result.getContentType()
              << "\n  ETag: " << result.getETag()
              << "\n  Last Modified (LastModified): " << result.getLastModified()
              << "\n  Storage Class (StorageClass): " << result.getStorageClass() << std::endl;
    return 0;
}
          

Retrieve simplified metadata (GetObjectMeta)

The following code calls the GetObjectMeta operation to retrieve simplified metadata of an object. GetObjectMeta returns fewer metadata fields than HeadObject but provides better performance:

#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);

    auto outcome = client.getObjectMeta(
        oss::models::GetObjectMetaRequest()
            .setBucket("examplebucket")
            .setKey("exampleobject.txt"));

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

    auto& result = outcome.value();
    std::cout << "Simplified object metadata:"
              << "\n  Size (ContentLength): " << result.getContentLength()
              << "\n  ETag: " << result.getETag()
              << "\n  Last Modified (LastModified): " << result.getLastModified() << std::endl;
    return 0;
}
          

References

  • For a complete example of retrieving full object metadata, see HeadObject.cpp.

  • For a complete example of retrieving simplified object metadata, see GetObjectMeta.cpp.