代码之家  ›  专栏  ›  技术社区  ›  Souciance Eqdam Rashti

没有从Azure JAVA SDK接收到的元数据字段

  •  1
  • Souciance Eqdam Rashti  · 技术社区  · 7 年前

    在我们的Azure门户中,我创建了一个存储帐户,在其中创建了一个blob容器,在其中创建了一个blob,它只是一个简单的文本文件。我还设置了这里看到的blob上的一些随机元数据字段。 enter image description here

    在我的Java代码中,当我通过Azure SDK访问BLB时,我可以打印BLB的内容,我可以访问BETB属性,比如ETAG,我可以访问容器元数据。但我无法打印上面看到的blob元数据字段。具体来说,从示例页面获取的代码不会打印任何内容,因为从 blob.getMetadata() 方法为空。

    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 回复  |  直到 7 年前
        1
  •  1
  •   Jerry Liu Phantom    7 年前

    以前 blob.getMetadata() 使用 blob.downloadAttributes()

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