使用Azure C ++ SDK设置元数据

时间:2016-12-06 12:42:19

标签: c++ azure azure-storage-blobs

我正在尝试使用以下代码在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 Storage Explorer中的文件时,没有设置元数据。我看了一下,这似乎是设置元数据的方式,但无论出于何种原因,它都无法正常工作。

任何想法都将不胜感激!

1 个答案:

答案 0 :(得分:1)

对于任何遇到这种情况的人来说,如果您要更新它,答案是您需要获得参考cloud_metadata

azure::storage::cloud_metadata& md = blockBlob.metadata();

或只是

auto& md = blockBlob.metadata();

然后按预期工作!