2016-12-06 28 views
2

我试图用下面的代码在Azure的Blob存储一个文件中设置的元数据设置的元数据:使用Azure的C++ SDK

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存储资源管理器中的文件没有元数据组。我已经看了一下,这看起来似乎是设置元数据的方式,但无论出于何种原因它都无法正常工作。

任何想法将不胜感激!

回答

1

对于任何人谁碰到这个撕扯自己的头发走出来的时候,答案是你需要获得到cloud_metadata一个参考如果您要更新它:

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

或者干脆

auto& md = blockBlob.metadata(); 

然后它按预期工作!