如何解决尽管先调用SetMetadataAsync然后再调用UploadBlobAsync,但在Blob中找不到元数据或标签
在我的SF应用程序中,我调用以下C#代码:
private readonly BlobContainerClient containerClient = null;
private readonly IDictionary<string,string> metadata = new Dictionary<string,string>();
DateTime now = DateTime.Now;
this.metadata.Clear();
this.metadata.Add("tag1",blobBasicName);
blobName = string.Format("{0}/{1:00}_{2:00}_{3:00}/{4:00}_{5:00}_{6:00}",blobBasicName,now.Year,now.Month,now.Day,now.Hour,now.Minute,now.Second);
using (MemoryStream ms = new MemoryStream(objectToWriteToBlob))
{
await this.containerClient.SetMetadataAsync(metadata);
await this.containerClient.UploadBlobAsync(blobName,ms);
}
并且可以在Azure门户中看到上传的Blob,但是元数据不存在:
我也尝试检索该存储帐户的Blob列表,并且blob.tags
也没有设置:
container_client = ContainerClient.from_connection_string(conn_str,container_name=container_name)
blob_list = []
print('Fetching blobs from %s...' % container_name)
for blob in container_client.list_blobs():
if blob.name.startswith(MY_BLOB_PREFIX) and blob.size > 500:
print('blob name = %s,tags = %s' % (blob.name,blob.tags))
blob_list.append(blob)
print('Fetched %d non-empty blobs from %s' % (len(blob_list),container_name))
解决方法
由于您使用的是基于blob container
的{{1}}方法,因此实际上是在为blob itself
而不是SetMetadataAsync
设置元数据。
如果要在上传过程中为Blob设置元数据,则应使用以下代码:
blob container object
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。