Заметка
Доступ к этой странице требует авторизации. Вы можете попробовать войти в систему или изменить каталог.
Доступ к этой странице требует авторизации. Вы можете попробовать сменить директорию.
Кроме данных, которые они содержат, BLOB-объекты поддерживают свойства системы и определяемые пользователем метаданные. В этой статье показано, как управлять системными свойствами и пользовательскими метаданными с помощью клиентской библиотеки служба хранилища Azure для Java.
Prerequisites
- Подписка Azure — создайте бесплатную учетную запись.
- Учетная запись хранения Azure — создайте такую учетную запись.
- Пакет средств разработки Java (JDK) версии 8 или более поздней версии (рекомендуется использовать версию 17 для оптимального взаимодействия)
- Apache Maven используется для управления проектами в этом примере
Настройка среды
Если у вас нет существующего проекта, в этом разделе показано, как настроить проект для работы с клиентской библиотекой Хранилище BLOB-объектов Azure для Java. Дополнительные сведения см. в статье "Начало работы с Azure Blob Storage и Java".
Чтобы работать с примерами кода в этой статье, выполните следующие действия, чтобы настроить проект.
Note
В этой статье используется средство сборки Maven для создания и запуска примера кода. Для работы с пакетами SDK Azure для Java есть и другие средства сборки, например Gradle.
Установка пакетов
Откройте файл pom.xml в текстовом редакторе. Установите пакеты, включив файл BOM или включив прямую зависимость.
Добавьте инструкции импорта
Добавьте следующие утверждения import :
import com.azure.storage.blob.*;
import com.azure.storage.blob.models.*;
import java.util.*;
Authorization
Механизм авторизации должен иметь необходимые разрешения для работы со свойствами контейнера или метаданными. Для авторизации с помощью Microsoft Entra ID (рекомендуется), вам потребуется встроенная роль Azure RBAC Storage Blob Data Reader или выше для операций get, и роль Storage Blob Data Contributor или выше для операций set. Дополнительные сведения см. в руководстве по авторизации для задания свойств BLOB-объектов (REST API), получения свойств BLOB-объектов (REST API), задания метаданных BLOB-объектов (REST API) или получения метаданных BLOB-объектов (REST API).
Создание клиентского объекта
Чтобы подключить приложение к хранилищу BLOB-объектов, создайте экземпляр BLOBServiceClient.
В следующем примере используется BLOBServiceClientBuilder для создания BlobServiceClient объекта с помощью DefaultAzureCredentialи показано, как создать клиенты контейнеров и BLOB-объектов при необходимости:
// Azure SDK client builders accept the credential as a parameter
// TODO: Replace <storage-account-name> with your actual storage account name
BlobServiceClient blobServiceClient = new BlobServiceClientBuilder()
.endpoint("https://<storage-account-name>.blob.core.windows.net/")
.credential(new DefaultAzureCredentialBuilder().build())
.buildClient();
// If needed, you can create a BlobContainerClient object from the BlobServiceClient
BlobContainerClient containerClient = blobServiceClient
.getBlobContainerClient("<container-name>");
// If needed, you can create a BlobClient object from the BlobContainerClient
BlobClient blobClient = containerClient
.getBlobClient("<blob-name>");
Дополнительные сведения о создании клиентских объектов и управлении ими см. в статье "Создание клиентских объектов и управление ими", взаимодействующих с ресурсами данных.
Сведения о свойствах и метаданных
Свойства системы: свойства системы есть у каждого ресурса хранилища BLOB-объектов. Некоторые из них можно читать или задавать, другие — только читать. На самом деле, некоторые свойства системы соответствуют определенным стандартным заголовкам HTTP. Клиентская библиотека служба хранилища Azure для Java поддерживает эти свойства.
Определяемые пользователем метаданные: такие метаданные состоят из одной или нескольких пар "имя-значение", которые можно указать для ресурса хранилища BLOB-объектов. Вы можете использовать метаданные для хранения дополнительных значений вместе с ресурсом. Значения метаданных предназначены только для ваших собственных целей и не влияют на поведение ресурса.
Пары имен и значений метаданных являются допустимыми HTTP-заголовками, поэтому они должны соответствовать всем ограничениям для HTTP-заголовков. Дополнительные сведения о требованиях к именованию метаданных см. в разделе "Имена метаданных".
Note
Теги индекса 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 , содержащий пары "имя-значение", с помощью следующего метода:
В следующем примере кода задаются метаданные объекта BLOB.
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 у вашего blob-объекта, чтобы заполнить коллекцию метаданных, а затем прочитать значения, как показано в примере ниже. Метод getProperties извлекает свойства и метаданные большого двоичного объекта, вызывая операцию Get Blob Properties и операцию Get Blob Metadata.
В следующем примере кода считываются метаданные объекта 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());
});
}
Resources
Дополнительные сведения об управлении свойствами системы и пользовательскими метаданными с помощью клиентской библиотеки хранилища BLOB-объектов Azure для Java см. в следующих ресурсах.
Примеры кода
Операции REST API
Пакет SDK Azure для Java содержит библиотеки, которые создаются на основе REST API Azure, что позволяет взаимодействовать с операциями REST API через знакомые парадигмы Java. Методы клиентской библиотеки для управления системными свойствами и пользовательскими метаданными используют следующие операции REST API:
- Установка свойств Blob (REST API)
- Получение свойств BLOB-объектов (REST API)
- Настройка метаданных BLOB-объектов (REST API)
- Получение метаданных BLOB-объектов (REST API)
Ресурсы клиентской библиотеки
Связанный контент
- Эта статья является частью руководства разработчика хранилища BLOB-объектов для Java. Дополнительные сведения см. в полном списке статей руководства разработчика по созданию приложения Java.