Ladda ned en blob med Java
Den här artikeln visar hur du laddar ned en blob med hjälp av Azure Storage-klientbiblioteket för Java. Du kan ladda ned blobdata till olika mål, inklusive en lokal filsökväg, dataström eller textsträng. Du kan också öppna en blobström och läsa från den.
Förutsättningar
- Azure-prenumeration – skapa en kostnadsfritt
- Azure Storage-konto – skapa ett lagringskonto
- Java Development Kit (JDK) version 8 eller senare (vi rekommenderar version 17 för bästa möjliga upplevelse)
- Apache Maven används för projekthantering i det här exemplet
Konfigurera din miljö
Om du inte har ett befintligt projekt visar det här avsnittet hur du konfigurerar ett projekt för att arbeta med Azure Blob Storage-klientbiblioteket för Java. Mer information finns i Kom igång med Azure Blob Storage och Java.
Följ de här stegen för att konfigurera projektet om du vill arbeta med kodexemplen i den här artikeln.
Kommentar
Den här artikeln använder verktyget Maven-kompilering för att skapa och köra exempelkoden. Andra byggverktyg, till exempel Gradle, fungerar också med Azure SDK för Java.
Installera paket
pom.xml
Öppna filen i textredigeraren. Installera paketen genom att inkludera BOM-filen eller inkludera ett direkt beroende.
Lägga till importinstruktioner
Lägg till följande import
-uttryck:
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;
Auktorisering
Auktoriseringsmekanismen måste ha de behörigheter som krävs för att utföra en nedladdningsåtgärd. För auktorisering med Microsoft Entra-ID (rekommenderas) behöver du den inbyggda Azure RBAC-rollen Storage Blob Data Reader eller senare. Mer information finns i auktoriseringsvägledningen för Get Blob (REST API).
Skapa ett klientobjekt
Om du vill ansluta en app till Blob Storage skapar du en instans av BlobServiceClient.
I följande exempel används BlobServiceClientBuilder för att skapa ett BlobServiceClient
objekt med , DefaultAzureCredential
och visar hur du skapar container- och blobklienter om det behövs:
// 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>");
Mer information om hur du skapar och hanterar klientobjekt finns i Skapa och hantera klientobjekt som interagerar med dataresurser.
Ladda ned en blob
Du kan använda någon av följande metoder för att ladda ned en blob:
Ladda ned till en filsökväg
I följande exempel laddas en blob ned till en lokal filsökväg:
public void downloadBlobToFile(BlobClient blobClient) {
blobClient.downloadToFile("filepath/local-file.png");
}
Ladda ned till en dataström
I följande exempel laddas en blob ned till ett OutputStream
objekt:
public void downloadBlobToStream(BlobClient blobClient) {
try (ByteArrayOutputStream outputStream = new ByteArrayOutputStream()) {
blobClient.downloadStream(outputStream);
} catch (IOException e) {
e.printStackTrace();
}
}
Ladda ned till en sträng
I följande exempel förutsätts att blobben är en textfil och laddar ned bloben till ett String
objekt:
public void downloadBlobToText(BlobClient blobClient) {
String content = blobClient.downloadContent().toString();
System.out.printf("Blob contents: %s%n", content);
}
Ladda ned från en dataström
I följande exempel laddas en blob ned genom att öppna en BlobInputStream
och läsa från strömmen:
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();
}
}
Ladda ned en blockblob med konfigurationsalternativ
Du kan definiera konfigurationsalternativ för klientbibliotek när du laddar ned en blob. Dessa alternativ kan justeras för att förbättra prestanda och förbättra tillförlitligheten. Följande kodexempel visar hur du använder BlobDownloadToFileOptions för att definiera konfigurationsalternativ när du anropar en nedladdningsmetod.
Ange alternativ för dataöverföring vid nedladdning
Du kan konfigurera värden i ParallelTransferOptions för att förbättra prestanda för dataöverföringsåtgärder. Följande värden kan justeras för nedladdningar baserat på appens behov:
blockSize
: Den maximala blockstorlek som ska överföras för varje begäran. Du kan ange det här värdet med hjälp av metoden setBlockSizeLong .maxConcurrency
: Det maximala antalet parallella begäranden som utfärdas vid en viss tidpunkt som en del av en enda parallell överföring. Du kan ange det här värdet med metoden setMaxConcurrency .
Lägg till följande import
direktiv i filen som ska användas ParallelTransferOptions
för en nedladdning:
import com.azure.storage.common.*;
Följande kodexempel visar hur du anger värden för ParallelTransferOptions
och inkluderar alternativen som en del av en BlobDownloadToFileOptions
instans. De värden som anges i det här exemplet är inte avsedda att vara en rekommendation. Om du vill justera dessa värden korrekt måste du ta hänsyn till appens specifika behov.
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);
}
Mer information om hur du justerar dataöverföringsalternativ finns i Prestandajustering för uppladdningar och nedladdningar med Java.
Resurser
Mer information om hur du laddar ned blobar med hjälp av Azure Blob Storage-klientbiblioteket för Java finns i följande resurser.
Kodexempel
REST API-åtgärder
Azure SDK för Java innehåller bibliotek som bygger på Azure REST API, så att du kan interagera med REST API-åtgärder via välbekanta Java-paradigm. Klientbiblioteksmetoderna för att ladda ned blobar använder följande REST API-åtgärd:
- Hämta blob (REST API)
Klientbiblioteksresurser
Relaterat innehåll
- Den här artikeln är en del av utvecklarguiden för Blob Storage för Java. Mer information finns i den fullständiga listan över utvecklarguideartiklar i Skapa din Java-app.