Udostępnij za pomocą


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.

Prerequisites

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.

Note

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ść.

Dodaj instrukcje importu

Dodaj następujące import wyrażenia:

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

import java.util.*;

Authorization

Mechanizm autoryzacji musi mieć niezbędne uprawnienia do pracy z właściwościami kontenera lub metadanymi. W przypadku autoryzacji za pomocą identyfikatora Microsoft Entra ID (zalecane) potrzebujesz wbudowanej roli Azure RBAC Czytelnik danych obiektu blob Storage lub wyższej w przypadku operacji pobierania, oraz Współautor danych obiektu blob Storage lub wyższej dla operacji ustawień. 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 instancję BlobServiceClient.

W poniższym przykładzie użyto BlobServiceClientBuilder do skonstruowania obiektu BlobServiceClient przy użyciu DefaultAzureCredential, i pokazano, jak utworzyć klientów dla kontenerów i blobów, 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.

Note

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 blobów są automatycznie indeksowane i możliwe do wyszukiwania przez natywną usługę blobów. 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 właściwości systemowe ContentType 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 pary nazwa-wartość - jedną lub więcej - 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 wyświetla 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());
    });
}

Resources

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.