未从 blob 上的 azure java sdk 收到元数据字段
Posted
技术标签:
【中文标题】未从 blob 上的 azure java sdk 收到元数据字段【英文标题】:Metadata fields not received from azure java sdk on a blob 【发布时间】:2019-06-09 13:02:16 【问题描述】:在我们的 Azure 门户中,我创建了一个存储帐户,并在其中创建了一个 blob 容器,其中一个 blob 只是一个简单的文本文件。我还在此处看到的 blob 上设置了一些随机元数据字段。
在我的 java 代码中,当我通过 Azure SDK 访问 Blob 时,我可以打印 Blob 的内容,我可以访问 Etag 等 Blob 属性,并且我可以访问容器元数据。但我无法打印上面看到的 blob 元数据字段。具体来说,从示例页面获取的这段代码不会打印任何内容,因为从 blob.getMetadata()
方法接收到的 HashMap 是空的。
System.out.println("Get blob metadata:");
HashMap<String, String> metadata = blob.getMetadata();
Iterator it = metadata.entrySet().iterator();
while (it.hasNext())
Map.Entry pair = (Map.Entry) it.next();
System.out.printf(" %s = %s%n", pair.getKey(), pair.getValue());
it.remove();
如果我改为对 blob 进行 REST API 调用并要求提供元数据字段,我会将它们作为 HTTP 标头返回。但是,如果可能的话,我想通过 SDK 访问它们。
【问题讨论】:
【参考方案1】:在blob.getMetadata()
之前,使用blob.downloadAttributes()
此方法填充 blob 的系统属性和用户定义的元数据。在读取或修改 blob 的属性或元数据之前,请调用此方法或其重载以从 Microsoft Azure 存储服务中检索 blob 的属性和元数据的最新值。
【讨论】:
以上是关于未从 blob 上的 azure java sdk 收到元数据字段的主要内容,如果未能解决你的问题,请参考以下文章
Blob 存储 java sdk 由 azure AD 授权
Azure blobs Java sdk 无法返回对象的 versionID 列表
适用于 blob 的 Azure Java SDK - 已请求加载默认 HttpClient 提供程序,但在类路径中找不到该提供程序