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 ascn-hangzhou. -
The sample code uses environment variables to obtain access credentials.
-
To retrieve object metadata, you must have the
oss:GetObjectpermission.
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.