Télécharger un blob avec Java
Cet article montre comment télécharger un objet blob en utilisant la Bibliothèque de client Stockage Azure pour Java. Vous pouvez télécharger des données blob vers différentes destinations, notamment un chemin d’accès de fichier local, un flux ou une chaîne de texte. Vous pouvez également ouvrir un flux d’objets blob et lire à partir de celui-ci.
Prérequis
- Abonnement Azure : créez-en un gratuitement
- Compte de stockage Azure : créez un compte de stockage
- Kit de développement Java (JDK) version 8 ou ultérieure (nous recommandons la version 17 pour une expérience optimale)
- Apache Maven est utilisé pour la gestion de projet dans cet exemple
Paramétrer votre environnement
Si vous n’avez pas de projet existant, cette section vous montre comment configurer un projet pour qu’il fonctionne avec la bibliothèque de client Stockage Blob Azure pour Java. Pour plus d’informations, consultez Bien démarrer avec Stockage Blob Azure et Java.
Pour utiliser les exemples de code de cet article, effectuez les étapes suivantes pour configurer votre projet.
Remarque
Cet article utilise l’outil de génération Maven pour générer et exécuter l’exemple de code. D’autres outils de génération, comme Gradle, fonctionnent également avec le Kit de développement logiciel (SDK) Azure pour Java.
Installer des packages
Ouvrez le fichier pom.xml
dans votre éditeur de texte. Installez les packages en incluant le fichier de marque d’ordre d’octet ou en incluant une dépendance directe.
Ajouter des instructions import
Ajoutez les instructions import
suivantes :
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;
Autorisation
Le mécanisme d’autorisation doit disposer des autorisations nécessaires pour effectuer une opération de téléchargement. Pour l’autorisation avec Microsoft Entra ID (recommandé), vous devez disposer au minimum du rôle RBAC Azure intégré Lecteur de données Blob du stockage. Pour en savoir plus, consultez l’aide sur l’autorisation pour l’opération Get Blob (API REST).
Créer un objet client
Pour connecter une application au Stockage Blob, créez une instance de BlobServiceClient.
L’exemple suivant utilise BlobServiceClientBuilder pour générer un objet BlobServiceClient
en utilisant DefaultAzureCredential
, et montre comment créer si nécessaire des clients de conteneur et de blob :
// 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>");
Pour en savoir plus sur la création et la gestion d’objets clients, consultez Créer et gérer des objets clients qui interagissent avec des ressources de données.
Télécharger un objet blob
Vous pouvez utiliser l’une des méthodes suivantes pour télécharger un objet blob :
Télécharger dans un chemin de fichier
L’exemple suivant télécharge un blob dans un chemin d’accès de fichier local :
public void downloadBlobToFile(BlobClient blobClient) {
blobClient.downloadToFile("filepath/local-file.png");
}
Télécharger dans un flux
L’exemple suivant télécharge un blob dans un objet OutputStream
:
public void downloadBlobToStream(BlobClient blobClient) {
try (ByteArrayOutputStream outputStream = new ByteArrayOutputStream()) {
blobClient.downloadStream(outputStream);
} catch (IOException e) {
e.printStackTrace();
}
}
Télécharger dans une chaîne
L’exemple suivant suppose que l’objet blob est un fichier texte et télécharge l’objet blob vers un String
objet :
public void downloadBlobToText(BlobClient blobClient) {
String content = blobClient.downloadContent().toString();
System.out.printf("Blob contents: %s%n", content);
}
Télécharger à partir d’un flux
L’exemple suivant télécharge un blob en ouvrant un BlobInputStream
et en lisant dans le flux :
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();
}
}
Télécharger un objet blob de blocs avec des options de configuration
Vous pouvez définir des options de configuration de bibliothèque de client lors du téléchargement d’un objet blob. Ces options peuvent être paramétrées pour améliorer les performances et améliorer la fiabilité. Les exemples de code suivants montrent comment utiliser BlobDownloadToFileOptions pour définir des options de configuration lors de l’appel d’une méthode de téléchargement.
Spécifier les options de transfert de données lors du téléchargement
Vous pouvez configurer des valeurs dans ParallelTransferOptions pour améliorer le niveau de performance des opérations de transfert de données. Les valeurs suivantes peuvent être ajustées pour les téléchargements en fonction des besoins de votre application :
blockSize
: taille de bloc maximale à transférer pour chaque requête. Vous pouvez définir cette valeur à l’aide de la méthode setBlockSizeLong.maxConcurrency
: nombre maximal de requêtes parallèles émises à un moment donné dans le cadre d’un transfert parallèle unique. Vous pouvez définir cette valeur à l’aide de la méthode setMaxConcurrency.
Ajoutez la directive import
suivante à votre fichier pour utiliser ParallelTransferOptions
pour un téléchargement :
import com.azure.storage.common.*;
L’exemple de code suivant montre comment définir des valeurs pour ParallelTransferOptions
et inclure les options dans le cadre d’un BlobDownloadToFileOptions
instance. Les valeurs fournies dans cet exemple ne sont pas destinées à être une recommandation. Pour régler correctement ces valeurs, vous devez tenir compte des besoins spécifiques de votre application.
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);
}
Pour en savoir plus sur le réglage des options de transfert de données, consultez Réglage des performances pour les chargements et les téléchargements avec Java.
Ressources
Pour en savoir plus sur le téléchargement d’objets blob à l’aide de la bibliothèque de client Stockage Blob Azure pour Java, consultez les ressources suivantes.
Exemples de code
Opérations de l'API REST
Le Kit de développement logiciel (SDK) Azure pour Java contient des bibliothèques qui s'appuient sur l'API REST Azure, vous permettant d’interagir avec les opérations de l’API REST par le biais de paradigmes Java familiers. Les méthodes de bibliothèque de client pour télécharger des objets blob utilisent l’opération d’API REST suivante :
- Get Blob (API REST)
Ressources de bibliothèque cliente
- Documentation de référence sur la bibliothèque cliente
- Code source de la bibliothèque de client
- Package (Maven)
Contenu connexe
- Cet article fait partie du guide pour les développeurs Stockage Blob pour Java. Pour découvrir plus d’informations, consultez la liste complète des articles du guide du développeur dans Générer votre application Java.