文件元数据(Object Metadata)包括文件的大小、类型、修改时间等信息。本文介绍如何使用 OSS C++ SDK V2 获取文件元数据。
注意事项
-
运行示例代码前,请将代码中的
<region>替换为实际的地域,如cn-hangzhou。 -
本文示例代码使用环境变量获取访问凭证。
-
要获取文件元数据,您必须拥有
oss:GetObject权限。
示例代码
获取完整元数据(HeadObject)
以下代码演示如何使用 HeadObject 获取文件的完整元数据信息:
#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 << "获取文件元数据失败"
<< ", code: " << e.getCode()
<< ", message: " << e.getMessage()
<< ", requestId: " << e.getRequestId() << std::endl;
return 1;
}
auto& result = outcome.value();
std::cout << "文件元数据信息:"
<< "\n 文件大小 (ContentLength): " << result.getContentLength()
<< "\n 文件类型 (ContentType): " << result.getContentType()
<< "\n ETag: " << result.getETag()
<< "\n 最后修改时间 (LastModified): " << result.getLastModified()
<< "\n 存储类型 (StorageClass): " << result.getStorageClass() << std::endl;
return 0;
}
获取简化元数据(GetObjectMeta)
以下代码演示如何使用 GetObjectMeta 获取文件的简化元数据信息。相比 HeadObject,GetObjectMeta 返回的元数据更少,但性能更好:
#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 << "获取文件简化元数据失败"
<< ", code: " << e.getCode()
<< ", message: " << e.getMessage()
<< ", requestId: " << e.getRequestId() << std::endl;
return 1;
}
auto& result = outcome.value();
std::cout << "文件简化元数据信息:"
<< "\n 文件大小 (ContentLength): " << result.getContentLength()
<< "\n ETag: " << result.getETag()
<< "\n 最后修改时间 (LastModified): " << result.getLastModified() << std::endl;
return 0;
}
相关文档
关于获取文件元数据的完整示例代码,请参见HeadObject.cpp。
关于获取文件元数据摘要的完整示例代码,请参见GetObjectMeta.cpp。
该文章对您有帮助吗?