Поля метаданных не получены из Azure java sdk в большом двоичном объекте

На нашем портале Azure я создал учетную запись хранения и внутри создал контейнер больших двоичных объектов, а внутри этого большого двоичного объекта - простой текстовый файл. Я также установил несколько случайных полей метаданных в большом двоичном объекте, показанном здесь. введите здесь описание изображения

В моем Java-коде, когда я обращаюсь к большому двоичному объекту через Azure SDK, я могу распечатать содержимое большого двоичного объекта, я могу получить доступ к свойствам большого двоичного объекта, таким как Etag, и получить доступ к метаданным контейнера. Но я не могу распечатать поля метаданных blob, показанные выше. В частности, этот код, взятый со страницы примеров, ничего не печатает, поскольку полученный HashMap из метода 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(); 
             } 

Если я вместо этого сделаю вызов REST API для большого двоичного объекта и запрошу поля метаданных, я верну их в виде заголовков HTTP. Однако я хотел бы получить к ним доступ через SDK, если это возможно.


person Souciance Eqdam Rashti    schedule 15.01.2019    source источник


Ответы (1)


Перед blob.getMetadata() используйте blob.downloadAttributes ()

Этот метод заполняет системные свойства большого двоичного объекта и пользовательские метаданные. Перед чтением или изменением свойств или метаданных большого двоичного объекта вызовите этот метод или его перегрузку, чтобы получить последние значения свойств и метаданных большого двоичного объекта из службы хранилища Microsoft Azure.

person Jerry Liu    schedule 16.01.2019