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 .NET. 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 objektů blob a číst z něj.
Prerequisites
- Předplatné Azure – vytvoření bezplatného předplatného
- Účet úložiště Azure – Vytvoření účtu úložiště
- Nejnovější SDK .NET pro váš operační systém. Nezapomeňte získat SDK (softwarovou sadu pro vývoj) a ne runtime.
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 .NET. Kroky zahrnují instalaci balíčku, přidání using direktiv a vytvoření autorizovaného objektu klienta. Podrobnosti najdete v tématu Začínáme se službou Azure Blob Storage a .NET.
Instalace balíčků
Z adresáře projektu nainstalujte balíčky pro klientské knihovny Azure Blob Storage a Azure Identity pomocí dotnet add package příkazu. Balíček Azure.Identity je potřeba pro připojení bez hesla ke službám Azure.
dotnet add package Azure.Storage.Blobs
dotnet add package Azure.Identity
Přidejte using direktivy
Na začátek souboru kódu přidejte tyto using direktivy:
using Azure.Identity;
using Azure.Storage.Blobs;
using Azure.Storage.Blobs.Models;
using Azure.Storage.Blobs.Specialized;
Některé příklady kódu v tomto článku mohou vyžadovat další using direktivy.
Vytvoření objektu klienta
Pokud chcete připojit aplikaci ke službě Blob Storage, vytvořte instanci BlobServiceClient. Následující příklad ukazuje, jak pomocí DefaultAzureCredential vytvořit objekt klienta pro autorizaci.
public BlobServiceClient GetBlobServiceClient(string accountName)
{
BlobServiceClient client = new(
new Uri($"https://{accountName}.blob.core.windows.net"),
new DefaultAzureCredential());
return client;
}
Můžete zaregistrovat služebního klienta pro injektování závislostí v aplikaci .NET.
Můžete také vytvořit klientské objekty pro konkrétní kontejnery nebo objekty blob. 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.
Authorization
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 získání objektu blob (REST API).
Stažení objektu blob
Ke stažení objektu blob můžete použít některou z následujících metod:
Můžete také otevřít datový proud pro čtení z blobu. Stream stáhne objekt blob pouze při čtení datového proudu. Můžete použít kteroukoli z těchto metod:
Stažení do cesty k souboru
Následující příklad stáhne objekt blob do místní cesty k souboru. Pokud zadaný adresář neexistuje, vyvolá kód výjimku DirectoryNotFoundException. Pokud soubor již existuje na localFilePath, během následného stahování se ve výchozím nastavení přepíše.
public static async Task DownloadBlobToFileAsync(
BlobClient blobClient,
string localFilePath)
{
await blobClient.DownloadToAsync(localFilePath);
}
Stažení do streamu
Následující příklad stáhne blob vytvořením objektu Stream a následným stažením do tohoto toku. Pokud zadaný adresář neexistuje, vyvolá kód výjimku DirectoryNotFoundException.
public static async Task DownloadBlobToStreamAsync(
BlobClient blobClient,
string localFilePath)
{
FileStream fileStream = File.OpenWrite(localFilePath);
await blobClient.DownloadToAsync(fileStream);
fileStream.Close();
}
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 řetězce:
public static async Task DownloadBlobToStringAsync(BlobClient blobClient)
{
BlobDownloadResult downloadResult = await blobClient.DownloadContentAsync();
string blobContents = downloadResult.Content.ToString();
}
Stažení ze streamu
Následující příklad stáhne objekt blob čtením ze streamu:
public static async Task DownloadBlobFromStreamAsync(
BlobClient blobClient,
string localFilePath)
{
using (var stream = await blobClient.OpenReadAsync())
{
FileStream fileStream = File.OpenWrite(localFilePath);
await stream.CopyToAsync(fileStream);
}
}
Stažení blokového blobu 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 BlobDownloadToOptions k definování možností konfigurace při volání metody stahování. Všimněte si, že stejné možnosti jsou k dispozici pro BlobDownloadOptions.
Určení možností přenosu dat při stahování
Hodnoty v StorageTransferOptions můžete nakonfigurovat tak, aby se zlepšil výkon operací přenosu dat. Následující příklad kódu ukazuje, jak nastavit hodnoty pro StorageTransferOptions a zahrnout možnosti jako součást instance BlobDownloadToOptions. 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 static async Task DownloadBlobWithTransferOptionsAsync(
BlobClient blobClient,
string localFilePath)
{
FileStream fileStream = File.OpenWrite(localFilePath);
var transferOptions = new StorageTransferOptions
{
// Set the maximum number of parallel transfer workers
MaximumConcurrency = 2,
// Set the initial transfer length to 8 MiB
InitialTransferSize = 8 * 1024 * 1024,
// Set the maximum length of a transfer to 4 MiB
MaximumTransferSize = 4 * 1024 * 1024
};
BlobDownloadToOptions downloadOptions = new BlobDownloadToOptions()
{
TransferOptions = transferOptions
};
await blobClient.DownloadToAsync(fileStream, downloadOptions);
fileStream.Close();
}
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í.
Zadání možností ověření přenosu při stahování
Můžete zadat možnosti ověření přenosu, které vám pomůžou zajistit, že se data stáhnou správně a nebudou během přenosu manipulována. Možnosti ověření přenosu je možné definovat na úrovni klienta pomocí BlobClientOptions, který aplikuje možnosti ověřování na všechny metody volané z instance BlobClient.
Můžete také přepsat možnosti ověřování přenosu na úrovni metody pomocí BlobDownloadToOptions. Následující příklad kódu ukazuje, jak vytvořit BlobDownloadToOptions objekt a zadat algoritmus pro generování kontrolního součtu. Kontrolní součet pak služba použije k ověření integrity dat staženého obsahu.
public static async Task DownloadBlobWithChecksumAsync(
BlobClient blobClient,
string localFilePath)
{
FileStream fileStream = File.OpenWrite(localFilePath);
var validationOptions = new DownloadTransferValidationOptions
{
AutoValidateChecksum = true,
ChecksumAlgorithm = StorageChecksumAlgorithm.Auto
};
BlobDownloadToOptions downloadOptions = new BlobDownloadToOptions()
{
TransferValidation = validationOptions
};
await blobClient.DownloadToAsync(fileStream, downloadOptions);
fileStream.Close();
}
Následující tabulka ukazuje dostupné možnosti pro algoritmus kontrolního součtu, jak je definováno storageChecksumAlgorithm:
| Name | Value | Description |
|---|---|---|
| Auto | 0 | Recommended. Umožňuje knihovně zvolit algoritmus. Různé verze knihoven můžou zvolit různé algoritmy. |
| None | 1 | Žádný vybraný algoritmus. Nevypočítávejte kontrolní součty ani je nepožadujte. |
| MD5 | 2 | Standardní hashovací algoritmus MD5 |
| StorageCrc64 | 3 | Vlastní 64bitová verze CRC služby Azure Storage |
Resources
Další informace o tom, jak stáhnout objekty blob pomocí klientské knihovny služby Azure Blob Storage pro .NET, najdete v následujících zdrojích informací.
Ukázky kódu
Operace rozhraní REST API
Sada Azure SDK pro .NET 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 .NET. 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
Viz také
Související obsah
- Tento článek je součástí příručky pro vývojáře služby Blob Storage pro .NET. Další informace najdete v úplném seznamu článků příručky pro vývojáře na webu Sestavení aplikace .NET.