使用 Azure C++ SDK 设置元数据
Setting metadata using Azure C++ SDK
我正在尝试使用以下代码在 Azure blob 存储中的文件上设置元数据:
bool AzureUploader::uploadFile(const boost::filesystem::path& filePath)
{
auto leaf = filePath.filename();
azure::storage::cloud_blob_container container =
blob_client.get_container_reference(U("my_container"));
container.create_if_not_exists();
azure::storage::cloud_block_blob blockBlob =
container.get_block_blob_reference(leaf.wstring());
auto filepathStr = filePath.wstring();
blockBlob.upload_from_file(filepathStr);
blockBlob.download_attributes();
azure::storage::cloud_metadata md = blockBlob.metadata();
md[U("_timestamp")] = U("today");
blockBlob.upload_metadata();
}
然而,当我在 Azure 存储资源管理器中查看文件时,没有元数据集。我查了一下,这似乎是设置元数据的方法,但无论出于何种原因,它都不起作用。
如有任何想法,我们将不胜感激!
对于遇到此问题的任何人来说,答案是如果您要更新它,则需要获得 对 cloud_metadata
的引用:
azure::storage::cloud_metadata& md = blockBlob.metadata();
或者干脆
auto& md = blockBlob.metadata();
然后它按预期工作!
我正在尝试使用以下代码在 Azure blob 存储中的文件上设置元数据:
bool AzureUploader::uploadFile(const boost::filesystem::path& filePath)
{
auto leaf = filePath.filename();
azure::storage::cloud_blob_container container =
blob_client.get_container_reference(U("my_container"));
container.create_if_not_exists();
azure::storage::cloud_block_blob blockBlob =
container.get_block_blob_reference(leaf.wstring());
auto filepathStr = filePath.wstring();
blockBlob.upload_from_file(filepathStr);
blockBlob.download_attributes();
azure::storage::cloud_metadata md = blockBlob.metadata();
md[U("_timestamp")] = U("today");
blockBlob.upload_metadata();
}
然而,当我在 Azure 存储资源管理器中查看文件时,没有元数据集。我查了一下,这似乎是设置元数据的方法,但无论出于何种原因,它都不起作用。
如有任何想法,我们将不胜感激!
对于遇到此问题的任何人来说,答案是如果您要更新它,则需要获得 对 cloud_metadata
的引用:
azure::storage::cloud_metadata& md = blockBlob.metadata();
或者干脆
auto& md = blockBlob.metadata();
然后它按预期工作!