Udostępnij za pośrednictwem


Zarządzanie właściwościami i metadanymi obiektów blob za pomocą języka Java

Oprócz danych, które zawierają, obiekty blob obsługują właściwości systemu i metadane zdefiniowane przez użytkownika. W tym artykule pokazano, jak zarządzać właściwościami systemu i metadanymi zdefiniowanymi przez użytkownika za pomocą biblioteki klienta usługi Azure Storage dla języka Java.

Wymagania wstępne

Konfigurowanie środowiska

Jeśli nie masz istniejącego projektu, w tej sekcji pokazano, jak skonfigurować projekt do pracy z biblioteką klienta usługi Azure Blob Storage dla języka Java. Aby uzyskać więcej informacji, zobacz Rozpoczynanie pracy z usługami Azure Blob Storage i Java.

Aby pracować z przykładami kodu w tym artykule, wykonaj następujące kroki, aby skonfigurować projekt.

Uwaga

W tym artykule użyto narzędzia kompilacji maven do skompilowania i uruchomienia przykładowego kodu. Inne narzędzia kompilacji, takie jak Gradle, współpracują również z zestawem Azure SDK dla języka Java.

Instalowanie pakietów

pom.xml Otwórz plik w edytorze tekstów. Zainstaluj pakiety, dołączając plik BOM lub uwzględniając bezpośrednią zależność.

Dodawanie instrukcji importu

Dodaj następujące instrukcje import:

import com.azure.storage.blob.*;
import com.azure.storage.blob.models.*;

import java.util.*;

Autoryzacja

Mechanizm autoryzacji musi mieć niezbędne uprawnienia do pracy z właściwościami kontenera lub metadanymi. W przypadku autoryzacji przy użyciu identyfikatora entra firmy Microsoft (zalecane) potrzebujesz wbudowanej roli Czytelnik danych obiektu blob usługi Storage usługi Storage lub nowszego w przypadku operacji pobierania oraz współautora danych obiektu blob usługi Storage lub nowszego dla operacji zestawu . Aby dowiedzieć się więcej, zobacz wskazówki dotyczące autoryzacji dotyczące ustawiania właściwości obiektów blob (interfejs API REST), Uzyskiwanie właściwości obiektu blob (interfejs API REST), Ustawianie metadanych obiektu blob (interfejs API REST) lub Pobieranie metadanych obiektu blob (interfejs API REST).

Tworzenie obiektu klienta

Aby połączyć aplikację z usługą Blob Storage, utwórz wystąpienie klasy BlobServiceClient.

W poniższym przykładzie użyto obiektu BlobServiceClientBuilder do skompilowania BlobServiceClient obiektu przy użyciu metody DefaultAzureCredentiali pokazano, jak utworzyć klientów kontenerów i obiektów blob, w razie potrzeby:

// 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>");

Aby dowiedzieć się więcej na temat tworzenia obiektów klienta i zarządzania nimi, zobacz Tworzenie obiektów klienta korzystających z zasobów danych i zarządzanie nimi.

Informacje o właściwościach i metadanych

  • Właściwości systemu: właściwości systemu istnieją w każdym zasobie usługi Blob Storage. Niektóre z nich mogą być odczytywane lub ustawiane, a inne są tylko do odczytu. Pod osłonami niektóre właściwości systemowe odpowiadają pewnym standardowym nagłówkom HTTP. Biblioteka klienta usługi Azure Storage dla języka Java obsługuje te właściwości.

  • Metadane zdefiniowane przez użytkownika: metadane zdefiniowane przez użytkownika składają się z co najmniej jednej pary nazwa-wartość określonej dla zasobu usługi Blob Storage. Za pomocą metadanych można przechowywać dodatkowe wartości z zasobem. Wartości metadanych są przeznaczone tylko do własnych celów i nie mają wpływu na zachowanie zasobu.

    Pary nazwa/wartość metadanych są prawidłowymi nagłówkami HTTP i powinny być zgodne ze wszystkimi ograniczeniami dotyczącymi nagłówków HTTP. Aby uzyskać więcej informacji na temat wymagań dotyczących nazewnictwa metadanych, zobacz Nazwy metadanych.

Uwaga

Tagi indeksu obiektów blob zapewniają również możliwość przechowywania dowolnych atrybutów klucza/wartości zdefiniowanych przez użytkownika wraz z zasobem usługi Azure Blob Storage. Podobnie jak w przypadku metadanych, tylko tagi indeksu obiektów blob są automatycznie indeksowane i możliwe do przeszukiwania przez natywną usługę obiektów blob. Metadanych nie można indeksować i wykonywać zapytań, chyba że korzystasz z oddzielnej usługi, takiej jak Azure Search.

Aby dowiedzieć się więcej na temat tej funkcji, zobacz Manage and find data on Azure Blob Storage with blob index (Zarządzanie danymi i znajdowanie ich w usłudze Azure Blob Storage za pomocą indeksu obiektów blob).

Ustawianie i pobieranie właściwości

Aby ustawić właściwości obiektu blob, użyj następującej metody:

Poniższy przykład kodu ustawia ContentType właściwości systemu i ContentLanguage dla obiektu blob.

Wszystkie właściwości, które nie zostały jawnie ustawione, są czyszczone. Poniższy przykład kodu najpierw pobiera istniejące właściwości obiektu blob, a następnie używa ich do wypełniania nagłówków, które nie są aktualizowane.

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");
}

Aby pobrać właściwości obiektu blob, użyj następującej metody:

Poniższy przykład kodu pobiera właściwości systemu obiektu blob i wyświetla niektóre wartości:

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());
}

Ustawianie i pobieranie metadanych

Metadane można określić jako jedną lub więcej par nazwa-wartość w zasobie obiektu blob lub kontenera. Aby ustawić metadane, wyślij obiekt Mapy zawierający pary name-value przy użyciu następującej metody:

Poniższy przykład kodu ustawia metadane obiektu 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");
    }
}

Aby pobrać metadane, wywołaj metodę getProperties w obiekcie blob, aby wypełnić kolekcję metadanych, a następnie odczytaj wartości, jak pokazano w poniższym przykładzie. Metoda getProperties pobiera właściwości obiektu blob i metadane, wywołując zarówno operację Pobierz właściwości obiektu blob, jak i operację Pobierz metadane obiektu blob.

Poniższy przykład kodu odczytuje metadane obiektu blob i drukuje każdą parę klucz/wartość:

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());
    });
}

Zasoby

Aby dowiedzieć się więcej na temat zarządzania właściwościami systemu i metadanymi zdefiniowanymi przez użytkownika przy użyciu biblioteki klienta usługi Azure Blob Storage dla języka Java, zobacz następujące zasoby.

Przykłady kodu

Operacje interfejsu API REST

Zestaw Azure SDK dla języka Java zawiera biblioteki, które bazują na interfejsie API REST platformy Azure, co umożliwia interakcję z operacjami interfejsu API REST za pomocą znanych paradygmatów języka Java. Metody biblioteki klienta do zarządzania właściwościami systemu i metadanymi zdefiniowanymi przez użytkownika używają następujących operacji interfejsu API REST:

Zasoby biblioteki klienta

  • Ten artykuł jest częścią przewodnika dla deweloperów usługi Blob Storage dla języka Java. Aby dowiedzieć się więcej, zobacz pełną listę artykułów z przewodnika dla deweloperów w temacie Tworzenie aplikacji Java.