Gestire le proprietà e i metadati dei BLOB con Java
Oltre ai dati che contengono, i BLOB supportano le proprietà di sistema e i metadati definiti dall'utente. Questo articolo illustra come gestire le proprietà di sistema e i metadati definiti dall'utente con la libreria client di Archiviazione di Azure per Java.
Prerequisiti
- Sottoscrizione di Azure: creare un account gratuito
- Account di archiviazione di Azure: creare un account di archiviazione
- Kit di sviluppo Java (JDK) versione 8 o successiva (è consigliabile usare la versione 17 per l’esperienza migliore)
- Per la gestione dei progetti in questo esempio viene usato Apache Maven
Configurazione dell'ambiente
Se non si ha un progetto esistente, questa sezione illustra come configurare un progetto per l’uso con la libreria client di Archiviazione BLOB di Azure per Java. Per altre informazioni, vedere Introduzione all’Archiviazione BLOB di Azure e Java.
Per usare gli esempi di codice in questo articolo, seguire questa procedura per configurare il progetto.
Nota
Questo articolo usa lo strumento di compilazione Maven per compilare ed eseguire il codice di esempio. Anche altri strumenti di compilazione, come Gradle, sono compatibili con Azure SDK per Java.
Installare i pacchetti
Aprire il file pom.xml
nell'editor di testo. Installare i pacchetti includendo il file BOM o includendo una dipendenza diretta.
Aggiungere le istruzioni di importazione
Aggiungere le istruzioni import
seguenti:
import com.azure.storage.blob.*;
import com.azure.storage.blob.models.*;
import java.util.*;
Autorizzazione
Il meccanismo di autorizzazione deve disporre delle autorizzazioni necessarie per utilizzare proprietà o metadati dei contenitori. Per l'autorizzazione con Microsoft Entra ID (scelta consigliata), è necessario disporre del ruolo predefinito di Controllo degli accessi in base al ruolo di Azure Lettore dei dati del BLOB di archiviazione o ruolo superiore per le operazioni get, e del ruolo Collaboratore ai dati del BLOB di archiviazione o ruolo superiore per le operazioni set. Per altre informazioni, vedere le indicazioni sulle autorizzazioni per Set Blob Properties (API REST), Get Blob Properties (API REST), Set Blob Metadata (API REST) o Get Blob Metadata (API REST).
Creare un oggetto client
Per connettere un'app ad Archiviazione BLOB, creare un'istanza di BlobServiceClient.
L’esempio seguente usa BlobServiceClientBuilder per compilare un oggetto BlobServiceClient
usando DefaultAzureCredential
e illustra come creare client blob e contenitori, se necessario:
// 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>");
Per altre informazioni sulla creazione e la gestione di oggetti client, vedere Creare e gestire oggetti client che interagiscono con le risorse dati.
Informazioni su proprietà e metadati
Proprietà di sistema: le proprietà di sistema esistono in ogni risorsa di archiviazione BLOB. Alcune di esse possono essere lette o impostate, mentre altre sono di sola lettura. Anche se in modo non esplicito, alcune proprietà di sistema corrispondono a specifiche intestazioni HTTP standard. La libreria client di Archiviazione di Azure per Java gestisce automaticamente queste proprietà.
Metadati definiti dall'utente: i metadati definiti dall'utente sono costituiti da una o più coppie nome-valore specificate per una risorsa di archiviazione BLOB. È possibile usare i metadati per archiviare valori aggiuntivi con la risorsa. I valori di metadati sono solo per le proprie esigenze e non influiscono sul comportamento della risorsa.
Le coppie nome/valore di metadati sono intestazioni HTTP valide e devono essere conformi alle restrizioni imposte sulle intestazioni HTTP. Per ulteriori informazioni sui requisiti di denominazione dei metadati, consultare Nomi dei metadati.
Nota
I tag indice BLOB offrono anche la possibilità di archiviare attributi chiave/valore arbitrari definiti dall'utente insieme a una risorsa di Archiviazione BLOB di Azure. Analogamente ai metadati, solo i tag indice BLOB vengono indicizzati automaticamente e resi ricercabili dal servizio BLOB nativo. I metadati non possono essere indicizzati e sottoposti a query a meno che non si usi un servizio diverso, ad esempio Ricerca cognitiva di Azure.
Per altre informazioni su questa funzionalità, vedere Gestire e trovare i dati in Archiviazione BLOB di Azure con l'indice BLOB.
Impostare e recuperare le proprietà
Per impostare le proprietà in un BLOB, usare il metodo seguente:
Nell'esempio di codice seguente vengono impostate le proprietà di sistema ContentType
e ContentLanguage
in un BLOB.
Tutte le proprietà non impostate in modo esplicito vengono cancellate. Nell'esempio di codice seguente vengono prima recuperate le proprietà esistenti nel BLOB, quindi le stesse vengono usate per popolare le intestazioni che non vengono aggiornate.
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");
}
Per recuperare le proprietà in un BLOB, usare il metodo seguente:
L'esempio di codice seguente recupera le proprietà di sistema di un BLOB e visualizza alcuni dei valori:
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());
}
Impostare e recuperare i metadati
È possibile specificare i metadati come uno o più coppie nome-valore in una risorsa BLOB o contenitore. Per impostare i metadati, inviare un oggetto Map contenente coppie nome-valore usando il metodo seguente:
Il seguente codice di esempio imposta i metadati in un 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");
}
}
Per recuperare i metadati, chiamare il metodo getProperties nel BLOB per popolare la raccolta di metadati, quindi leggere i valori, come nell'esempio mostrato di seguito. Il metodo getProperties
recupera le proprietà e i metadati del BLOB chiamando sia l'operazione Get Blob Properties, sia l'operazione Get Blob Metadata.
L'esempio di codice seguente legge i metadati in un BLOB e stampa ogni coppia chiave/valore:
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());
});
}
Risorse
Per altre informazioni su come gestire le proprietà di sistema e i metadati definiti dall'utente usando la libreria client di Archiviazione BLOB di Azure per Java, vedere le risorse seguenti.
Esempi di codice
Operazioni dell'API REST
Azure SDK per Java contiene librerie basate su API REST di Azure, che consentono di interagire con le operazioni dell'API REST tramite paradigmi Java noti. I metodi della libreria client per gestire le proprietà di sistema e i metadati definiti dall'utente usano le operazioni API REST seguenti:
- Set Blob Properties (API REST)
- Get Blob Properties (API REST)
- Set Blob Metadata (API REST)
- Get Blob Metadata (API REST)
Risorse della libreria client
- Documentazione di riferimento della libreria client
- Codice sorgente della libreria client
- Pacchetto (Maven)
Contenuto correlato
- Questo articolo fa parte della guida per sviluppatori di Archiviazione BLOB per Java. Per altre informazioni, vedere l'elenco completo degli articoli della Guida per sviluppatori in Creare la propria app Java.