我想使用Azure REST API在Azure上的Blob上设置一些自定义元数据属性。 上传文件工作正常(也通过REST API完成)。要设置自定义元数据,请按these instructions。示例网址可以是:
使用此请求标头:
X-MS-元logicalname:20141028_064011.jpg
我是通过jquery ajax还是通过Fiddler运行此url我总是得到相同的结果:调用似乎成功(我得到200状态代码)但是如果那时我检查blob元数据(使用C#代码)键找不到,元数据为空。
相反,如果我用C#做所有事情,我可以按照自己的意愿在我的blob上设置和获取任何元数据。
示例C#代码(现在正在运行):
var blobs = container.ListBlobs(null, true, BlobListingDetails.Metadata).Cast<CloudBlockBlob>();
foreach (var blob in blobs) {
Console.WriteLine(blob.Metadata["logicalname"]);
}
正如您所看到的,我已经在网址中输入了我的共享访问签名,而不是按照说明显示在请求标头中,但我怀疑这是问题,因为在上传和其他操作(也在桌面存储上)一切正常
我做错了吗? (显然是的,但是什么?...... :))
解决:
使用Azure存储资源管理器进行调查我看到元数据已正确设置并且存在,它只是没有通过C#检索。 Thanx to Gaurav的建议我编辑了我发布的C#代码示例,现在正在检索我通过REST API设置的元数据。
答案 0 :(得分:1)
元数据已存在,但由于您尚未获取元数据,因此您无法看到它。您可以做的是更改ListBlobs()
电话。假设您使用的是最新版本的存储客户端库,您可以执行以下操作:
var blobs = container.ListBlobs(null, true, BlobListingDetails.Metadata).Cast<CloudBlockBlob>();
这将填充元数据以及其他属性。