使用 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();

然后它按预期工作!