Бөлісу құралы:


Управление свойствами и метаданными BLOB-объектов с помощью Java

Кроме данных, которые они содержат, BLOB-объекты поддерживают свойства системы и определяемые пользователем метаданные. В этой статье показано, как управлять системными свойствами и пользовательскими метаданными с помощью клиентской библиотеки служба хранилища Azure для Java.

Необходимые компоненты

Сведения о свойствах и метаданных

  • Свойства системы: свойства системы есть у каждого ресурса хранилища BLOB-объектов. Некоторые из них можно считать или задать, некоторые — только считать. На самом деле, некоторые свойства системы соответствуют определенным стандартным заголовкам HTTP. Клиентская библиотека служба хранилища Azure для Java поддерживает эти свойства.

  • Определяемые пользователем метаданные: такие метаданные состоят из одной или нескольких пар "имя-значение", которые можно указать для ресурса хранилища BLOB-объектов. Вы можете использовать метаданные для хранения дополнительных значений с помощью ресурса хранилища. Значения метаданных предназначены только для ваших собственных целей и не влияют на поведение ресурса.

    Пары имен и значений метаданных являются допустимыми HTTP-заголовками, поэтому они должны соответствовать всем ограничениям для HTTP-заголовков. Дополнительные сведения о требованиях к именованию метаданных см. в разделе "Имена метаданных".

Примечание.

Теги индекса BLOB-объектов также предоставляют возможность хранения произвольных пользовательских атрибутов ключа и значения наряду с ресурсом хранилища BLOB-объектов Azure. Аналогично метаданным только теги индекса BLOB-объектов автоматически индексируются и делаются доступными для поиска в собственной службе BLOB-объектов. Метаданные не могут индексироваться и запрашиваться, если не используется отдельная служба, например поиск Azure.

Дополнительные сведения об этой функции см. в статье "Управление и поиск данных в хранилище BLOB-объектов Azure" с помощью индекса BLOB-объектов.

Задание и извлечение свойств

Чтобы задать свойства большого двоичного объекта, используйте следующий метод:

В следующем примере код задает свойства системы ContentType и ContentLanguage для BLOB-объекта.

Все свойства, не заданные явно, очищаются. Следующий пример кода сначала получает существующие свойства большого двоичного объекта, а затем использует их для заполнения заголовков, которые не обновляются.

public void setBlobProperties(BlobClient blobClient) {
    BlobProperties properties = blobClient.getProperties();

    // Set the ContentLanguage and ContentType headers, and populate the remaining
    // headers from the existing properties
    BlobHttpHeaders blobHeaders = new BlobHttpHeaders()
            .setContentLanguage("en-us")
            .setContentType("text/plain")
            .setCacheControl(properties.getCacheControl())
            .setContentDisposition(properties.getContentDisposition())
            .setContentEncoding(properties.getContentEncoding())
            .setContentMd5(properties.getContentMd5());

    blobClient.setHttpHeaders(blobHeaders);
    System.out.println("Set HTTP headers completed");
}

Чтобы получить свойства большого двоичного объекта, используйте следующий метод:

Следующий пример кода получает системные свойства большого двоичного объекта и отображает некоторые значения:

public void getBlobProperties(BlobClient blobClient) {
    BlobProperties properties = blobClient.getProperties();

    System.out.printf("BlobType: %s%n", properties.getBlobType());
    System.out.printf("BlobSize: %d%n", properties.getBlobSize());
    System.out.printf("ContentLanguage: %s%n", properties.getContentLanguage());
    System.out.printf("ContentType: %s%n", properties.getContentType());
}

Задание и извлечение метаданных

Метаданные можно указать как одну или несколько пар "имя-значение" для BLOB-ресурса или ресурса контейнера. Чтобы задать метаданные, отправьте объект Map , содержащий пары "имя-значение", с помощью следующего метода:

В следующем примере кода задаются метаданные большого двоичного объекта:

public void addBlobMetadata(BlobClient blobClient) {
    Map<String, String> metadata = new HashMap<String, String>();
    metadata.put("docType", "text");
    metadata.put("category", "reference");

    try {
        blobClient.setMetadata(metadata);
        System.out.printf("Set metadata completed %n");
    } catch (UnsupportedOperationException error) {
        System.out.printf("Failure while setting metadata %n");
    }
}

Чтобы получить метаданные, вызовите метод getProperties в большом двоичном объекте, чтобы заполнить коллекцию метаданных, а затем прочитать значения, как показано в приведенном ниже примере. Метод getProperties извлекает свойства и метаданные большого двоичного объекта, вызывая операцию "Свойства BLOB-объектов " и операцию get BLOB-метаданных .

В следующем примере кода считываются метаданные большого двоичного объекта и выводится каждая пара "ключ-значение":

public void readBlobMetadata(BlobClient blobClient) {
    // Get blob properties and metadata
    BlobProperties properties = blobClient.getProperties();

    System.out.printf("Blob metadata: %n");
    properties.getMetadata().entrySet().forEach(metadataItem -> {
        System.out.printf(" %s = %s%n", metadataItem.getKey(), metadataItem.getValue());
    });
}

Ресурсы

Дополнительные сведения об управлении свойствами системы и пользовательскими метаданными с помощью клиентской библиотеки Хранилище BLOB-объектов Azure для Java см. в следующих ресурсах.

Операции REST API

Пакет SDK Azure для Java содержит библиотеки, которые создаются на основе REST API Azure, что позволяет взаимодействовать с операциями REST API через знакомые парадигмы Java. Методы клиентской библиотеки для управления системными свойствами и пользовательскими метаданными используют следующие операции REST API:

Примеры кода

Ресурсы клиентской библиотеки