【问题标题】:Metadata fields not received from azure java sdk on a blob未从 blob 上的 azure java sdk 收到元数据字段
【发布时间】: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 访问它们。

【问题讨论】:

    标签: java azure azure-storage azure-blob-storage azure-sdk


    【解决方案1】:

    在blob.getMetadata() 之前,使用blob.downloadAttributes()

    此方法填充 blob 的系统属性和用户定义的元数据。在读取或修改 blob 的属性或元数据之前,请调用此方法或其重载以从 Microsoft Azure 存储服务中检索 blob 的属性和元数据的最新值。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-05-29
      • 1970-01-01
      • 1970-01-01
      • 2020-06-15
      • 2019-12-18
      • 2021-11-24
      • 2019-12-15
      • 2020-02-12
      相关资源
      最近更新 更多