Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Tento článek ukazuje, jak stáhnout objekt blob pomocí klientské knihovny Azure Storage pro Javu. Data objektů blob si můžete stáhnout do různých cílů, včetně místní cesty k souboru, datového proudu nebo textového řetězce. Můžete také otevřít datový proud blobů a číst z něj.
Požadavky
- Předplatné Azure – vytvoření bezplatného předplatného
- Účet úložiště Azure – Vytvoření účtu úložiště
- Sada Java Development Kit (JDK) verze 8 nebo novější (pro zajištění co nejlepšího prostředí doporučujeme verzi 17)
- Apache Maven se používá pro řízení projektů v tomto příkladu.
Nastavení prostředí
Pokud nemáte existující projekt, v této části se dozvíte, jak nastavit projekt pro práci s klientskou knihovnou Azure Blob Storage pro Javu. Další informace najdete v tématu Začínáme se službou Azure Blob Storage a Javou.
Pokud chcete pracovat s příklady kódu v tomto článku, nastavte projekt pomocí následujícího postupu.
Poznámka:
Tento článek používá nástroj pro sestavení Maven k sestavení a spuštění ukázkového kódu. Další nástroje sestavení, jako je Gradle, také pracují se sadou Azure SDK pro Javu.
Instalace balíčků
Otevřete soubor v textovém pom.xml editoru. Nainstalujte balíčky zahrnutím BOM souboru nebo začleněním přímé závislosti.
Přidejte příkazy importu
Přidejte následující příkazy import:
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;
Autorizace
Autorizační mechanismus musí mít potřebná oprávnění k provedení operace stahování. K autorizaci pomocí Microsoft Entra ID (doporučeno) potřebujete integrovanou roli Azure RBAC Storage Blob Data Reader nebo vyšší. Další informace najdete v pokynech pro autorizaci k Get Blob (REST API).
Vytvoření objektu klienta
Pokud chcete připojit aplikaci ke službě Blob Storage, vytvořte instanci BlobServiceClient.
Následující příklad používá BlobServiceClientBuilder k sestavení BlobServiceClient objektu pomocí DefaultAzureCredentiala ukazuje, jak vytvořit kontejner a klienty objektů blob v případě potřeby:
// 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>");
Další informace o vytváření a správě klientských objektů najdete v tématu Vytváření a správa klientských objektů, které pracují s datovými prostředky.
Stažení blobu
Ke stažení objektu blob můžete použít některou z následujících metod:
Stáhnout do souborové cesty
Následující příklad stáhne objekt blob na místní cestu k souboru:
public void downloadBlobToFile(BlobClient blobClient) {
blobClient.downloadToFile("filepath/local-file.png");
}
Stažení do streamu
Následující příklad stáhne objekt blob do objektu OutputStream :
public void downloadBlobToStream(BlobClient blobClient) {
try (ByteArrayOutputStream outputStream = new ByteArrayOutputStream()) {
blobClient.downloadStream(outputStream);
} catch (IOException e) {
e.printStackTrace();
}
}
Stažení do řetězce
Následující příklad předpokládá, že objekt blob je textový soubor a stáhne objekt blob do objektu String :
public void downloadBlobToText(BlobClient blobClient) {
String content = blobClient.downloadContent().toString();
System.out.printf("Blob contents: %s%n", content);
}
Stažení ze streamu
Následující příklad stáhne objekt blob tím, že otevře BlobInputStream a čte z proudu:
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();
}
}
Stáhnout blokový blob s možnostmi konfigurace
Při stahování objektu blob můžete definovat možnosti konfigurace klientské knihovny. Tyto možnosti je možné ladit, aby se zlepšil výkon a zvýšil spolehlivost. Následující příklady kódu ukazují, jak použít BlobDownloadToFileOptions k definování možností konfigurace při volání metody stahování.
Určení možností přenosu dat při stahování
Hodnoty v ParallelTransferOptions můžete nakonfigurovat tak, aby se zlepšil výkon operací přenosu dat. Následující hodnoty je možné ladit pro stahování na základě potřeb vaší aplikace:
-
blockSize: Maximální velikost bloku, která se má přenést pro každou žádost. Tuto hodnotu můžete nastavit pomocí setBlockSizeLong metoda. -
maxConcurrency: Maximální počet paralelních požadavků vydaných v libovolném okamžiku jako součást jednoho paralelního přenosu. Tuto hodnotu můžete nastavit pomocí metody setMaxConcurrency .
Přidejte do souboru následující import direktivu pro použití ParallelTransferOptions ke stažení:
import com.azure.storage.common.*;
Následující příklad kódu ukazuje, jak nastavit hodnoty pro ParallelTransferOptions a zahrnout volby jako součást instance BlobDownloadToFileOptions. Hodnoty uvedené v této ukázce nejsou určené jako doporučení. Pokud chcete tyto hodnoty správně vyladit, musíte zvážit konkrétní potřeby vaší aplikace.
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);
}
Další informace o ladění možností přenosu dat najdete v tématu Ladění výkonu pro nahrávání a stahování pomocí Javy.
Zdroje informací
Další informace o tom, jak stáhnout objekty blob pomocí klientské knihovny služby Azure Blob Storage pro Javu, najdete v následujících zdrojích informací.
Ukázky kódu
Operace rozhraní REST API
Sada Azure SDK pro Javu obsahuje knihovny, které jsou postavené na rozhraní Azure REST API a umožňují interakci s operacemi rozhraní REST API prostřednictvím známých paradigmat Javy. Metody klientské knihovny pro stahování objektů blob používají následující operaci rozhraní REST API:
- Získání objektu blob (REST API)
Prostředky klientské knihovny
Související obsah
- Tento článek je součástí příručky pro vývojáře služby Blob Storage pro Javu. Další informace najdete v úplném seznamu článků příručky pro vývojáře na webu Sestavení aplikace v Javě.