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
- Subskrypcja platformy Azure — utwórz jedną bezpłatnie
- Konto usługi Azure Storage — tworzenie konta magazynu
- Zestaw Java Development Kit (JDK) w wersji 8 lub nowszej (zalecamy wersję 17, aby uzyskać najlepsze środowisko)
- Narzędzie Apache Maven jest używane do zarządzania projektami w tym przykładzie
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 DefaultAzureCredential
i 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:
- Ustawianie właściwości obiektu blob (interfejs API REST)
- Pobieranie właściwości obiektu blob (interfejs API REST)
- Ustawianie metadanych obiektu blob (interfejs API REST)
- Pobieranie metadanych obiektu blob (interfejs API REST)
Zasoby biblioteki klienta
Powiązana zawartość
- 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.