Я пытаюсь установить метаданные для файла в хранилище BLOB-объектов Azure, используя следующий код:
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();
Тогда все работает как положено!
Других решений пока нет …