Поля метаданных, не полученные от лазурной Java SDK на BLOB-объекте - PullRequest
0 голосов
/ 15 января 2019

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

В своем Java-коде, когда я получаю доступ к BLOB-объекту через Azure SDK, я могу распечатать содержимое BLOB-объекта, я могу получить доступ к свойствам BLOB-объекта, таким как 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(); 
             } 

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

1 Ответ

0 голосов
/ 16 января 2019

До blob.getMetadata(), используйте blob.downloadAttributes ()

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

...