xar*_*tal 1 c# azure azure-storage azure-storage-blobs
与文档azure doc或msdn一样,您必须调用FetchAttributesAsync()以填充CloudBlockBlob的元数据.
我注意到,当我打电话时,元数据也会被填充,DownloadTextAsync()并且在我打电话时写入UploadTextAsync().这是否安全使用,因为它在将来版本的存储sdk中不会改变?我无法找到任何确认该行为的文档.
样品:
var blob = container.GetBlockBlobReference("testblob");
blob.Metadata["testdata"] = "set";
await blob.UploadTextAsync("content");
blob.Metadata["notset"] = "set";
blob = container.GetBlockBlobReference("testblob");
var content = await blob.DownloadTextAsync();
// here content["testdata"] is set and content["notset"] is null
Run Code Online (Sandbox Code Playgroud)
谢谢你告诉我这件事!
让我试着解释你的代码发生了什么.看看这是否澄清了您的疑虑.
执行以下代码时:
await blob.UploadTextAsync("content");
Run Code Online (Sandbox Code Playgroud)
本质上它调用Put BlobREST API.从REST API文档中可以看出,使用blob.Metadata["testdata"] = "set";代码指定的任何元数据元素都会传递到x-ms-meta-testdata标头中的REST API .
因此,当执行此代码时,元数据将与blob一起保存.
执行以下代码行时:
blob.Metadata["notset"] = "set";
Run Code Online (Sandbox Code Playgroud)
基本上,blob对象(属于类型CloudBlockBlob)Metadata属性会更新.此更新仅在客户端发生,并且没有任何内容保存在blob中.为了保存它,你必须打电话SetMetadataAsync.
来到最后一部分,当您执行以下代码行时:
var content = await blob.DownloadTextAsync();
Run Code Online (Sandbox Code Playgroud)
本质上它调用Get BlobREST API.从REST API文档中可以看出,此操作还会在响应头中返回blob的元数据.然后,Azure存储客户端库使用收到的数据更新Metadata您的属性,blob以响应REST API调用.
| 归档时间: |
|
| 查看次数: |
1621 次 |
| 最近记录: |