Scaricare un BLOB con Java
Questo articolo illustra come scaricare un BLOB usando la libreria client di Archiviazione di Azure per Java. È possibile scaricare dati BLOB in varie destinazioni, tra cui un percorso di file locale, un flusso o una stringa di testo. È anche possibile aprire un flusso BLOB e leggerlo.
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.common.*;
import com.azure.storage.blob.options.BlobDownloadToFileOptions;
import com.azure.storage.blob.specialized.*;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
Autorizzazione
Il meccanismo di autorizzazione deve disporre delle autorizzazioni necessarie per eseguire un'operazione di download. Per l'autorizzazione con Microsoft Entra ID (scelta consigliata), è necessario disporre del ruolo predefinito Controllo degli accessi in base al ruolo di Azure Lettore dei dati del BLOB di archiviazione o ruolo superiore. Per altre informazioni, vedere le indicazioni sulle autorizzazioni per Get Blob (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.
Scaricare un BLOB
Per scaricare un BLOB è possibile usare uno o più dei metodi seguenti:
Scaricare in un percorso di file
L'esempio seguente scarica un BLOB in un percorso di file locale:
public void downloadBlobToFile(BlobClient blobClient) {
blobClient.downloadToFile("filepath/local-file.png");
}
Scaricare in un flusso
L'esempio seguente scarica un BLOB in un oggetto OutputStream
:
public void downloadBlobToStream(BlobClient blobClient) {
try (ByteArrayOutputStream outputStream = new ByteArrayOutputStream()) {
blobClient.downloadStream(outputStream);
} catch (IOException e) {
e.printStackTrace();
}
}
Scaricare in una stringa
L'esempio seguente presuppone che il BLOB sia un file di testo e scarica il BLOB in un oggetto String
:
public void downloadBlobToText(BlobClient blobClient) {
String content = blobClient.downloadContent().toString();
System.out.printf("Blob contents: %s%n", content);
}
Scaricare da un flusso
L'esempio seguente scarica un BLOB aprendo un oggetto BlobInputStream
e leggendo dal flusso:
public void readBlobFromStream(BlobClient blobClient) {
// Opening a blob input stream allows you to read from a blob through a normal
// stream interface
try (BlobInputStream blobStream = blobClient.openInputStream()) {
blobStream.read();
} catch (IOException e) {
e.printStackTrace();
}
}
Scaricare un BLOB in blocchi con le opzioni di configurazione
È possibile definire le opzioni di configurazione della libreria client durante il download di un BLOB. Queste opzioni possono essere ottimizzate per migliorare le prestazioni e l'affidabilità. Gli esempi di codice seguenti illustrano come usare BlobDownloadToOptions per definire le opzioni di configurazione quando si chiama un metodo di download.
Specificare le opzioni di trasferimento dei dati al download
È possibile configurare valori in ParallelTransferOptions per migliorare le prestazioni delle operazioni di trasferimento dei dati. È possibile ottimizzare i valori seguenti relativi ai download in base alle esigenze dell'app:
blockSize
: dimensioni massime del blocco da trasferire per ogni richiesta. È possibile impostare questo valore usando il metodo setBlockSizeLong.maxConcurrency
: numero massimo di richieste parallele generate in qualsiasi momento come parte di un singolo trasferimento parallelo. È possibile impostare questo valore usando il metodo setMaxConcurrency.
Aggiungere la direttiva import
seguente al file per usare ParallelTransferOptions
per un download:
import com.azure.storage.common.*;
L'esempio di codice seguente illustra come impostare i valori per ParallelTransferOptions
e includere le opzioni come parte di un'istanza di BlobDownloadToFileOptions
. I valori forniti in questo esempio non sono necessariamente quelli consigliati. Per ottimizzare correttamente questi valori è necessario considerare le esigenze specifiche dell'app.
public void downloadBlobWithTransferOptions(BlobClient blobClient) {
ParallelTransferOptions parallelTransferOptions = new ParallelTransferOptions()
.setBlockSizeLong((long) (4 * 1024 * 1024)) // 4 MiB block size
.setMaxConcurrency(2);
BlobDownloadToFileOptions options = new BlobDownloadToFileOptions("<localFilePath>");
options.setParallelTransferOptions(parallelTransferOptions);
blobClient.downloadToFileWithResponse(options, null, null);
}
Per altre informazioni sull'ottimizzazione delle opzioni di trasferimento dei dati, vedere Ottimizzazione delle prestazioni per i caricamenti e i download con Java.
Risorse
Per altre informazioni su come scaricare i BLOB tramite 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 sull'API REST di Azure, che consentono di interagire con le operazioni dell'API REST tramite paradigmi Java noti. I metodi della libreria client per scaricare i BLOB usano l'operazione API REST seguente:
- Get Blob (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.