Ladda ned en blob med .NET
Den här artikeln visar hur du laddar ned en blob med hjälp av Azure Storage-klientbiblioteket för .NET. 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
- Senaste .NET SDK för operativsystemet. Se till att hämta SDK:et och inte körningen.
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 .NET. Stegen omfattar paketinstallation, tillägg av using
direktiv och skapande av ett auktoriserat klientobjekt. Mer information finns i Kom igång med Azure Blob Storage och .NET.
Installera paket
Från projektkatalogen installerar du paket för Azure Blob Storage- och Azure Identity-klientbiblioteken med hjälp av dotnet add package
kommandot . Azure.Identity-paketet behövs för lösenordslösa anslutningar till Azure-tjänster.
dotnet add package Azure.Storage.Blobs
dotnet add package Azure.Identity
Lägga till using
direktiv
Lägg till dessa using
direktiv överst i kodfilen:
using Azure.Identity;
using Azure.Storage.Blobs;
using Azure.Storage.Blobs.Models;
using Azure.Storage.Blobs.Specialized;
Vissa kodexempel i den här artikeln kan kräva ytterligare using
direktiv.
Skapa ett klientobjekt
Om du vill ansluta en app till Blob Storage skapar du en instans av BlobServiceClient. I följande exempel visas hur du skapar ett klientobjekt med hjälp av DefaultAzureCredential
för auktorisering:
public BlobServiceClient GetBlobServiceClient(string accountName)
{
BlobServiceClient client = new(
new Uri($"https://{accountName}.blob.core.windows.net"),
new DefaultAzureCredential());
return client;
}
Du kan registrera en tjänstklient för beroendeinmatning i en .NET-app.
Du kan också skapa klientobjekt för specifika containrar eller blobar. Mer information om hur du skapar och hanterar klientobjekt finns i Skapa och hantera klientobjekt som interagerar med dataresurser.
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).
Ladda ned en blob
Du kan använda någon av följande metoder för att ladda ned en blob:
Du kan också öppna en dataström för att läsa från en blob. Strömmen laddar bara ned bloben när dataströmmen läse från. Du kan använda någon av följande metoder:
Ladda ned till en filsökväg
I följande exempel laddas en blob ned till en lokal filsökväg. Om den angivna katalogen inte finns genererar koden en DirectoryNotFoundException. Om filen redan finns på localFilePath
skrivs den över som standard under efterföljande nedladdningar.
public static async Task DownloadBlobToFileAsync(
BlobClient blobClient,
string localFilePath)
{
await blobClient.DownloadToAsync(localFilePath);
}
Ladda ned till en dataström
I följande exempel laddas en blob ned genom att skapa ett Stream-objekt och sedan laddas ned till dataströmmen. Om den angivna katalogen inte finns genererar koden en DirectoryNotFoundException.
public static async Task DownloadBlobToStreamAsync(
BlobClient blobClient,
string localFilePath)
{
FileStream fileStream = File.OpenWrite(localFilePath);
await blobClient.DownloadToAsync(fileStream);
fileStream.Close();
}
Ladda ned till en sträng
I följande exempel förutsätts att blobben är en textfil och laddar ned bloben till en sträng:
public static async Task DownloadBlobToStringAsync(BlobClient blobClient)
{
BlobDownloadResult downloadResult = await blobClient.DownloadContentAsync();
string blobContents = downloadResult.Content.ToString();
}
Ladda ned från en dataström
I följande exempel laddas en blob ned genom att läsa från en dataström:
public static async Task DownloadBlobFromStreamAsync(
BlobClient blobClient,
string localFilePath)
{
using (var stream = await blobClient.OpenReadAsync())
{
FileStream fileStream = File.OpenWrite(localFilePath);
await stream.CopyToAsync(fileStream);
}
}
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 BlobDownloadToOptions för att definiera konfigurationsalternativ när du anropar en nedladdningsmetod. Observera att samma alternativ är tillgängliga för BlobDownloadOptions.
Ange alternativ för dataöverföring vid nedladdning
Du kan konfigurera värdena i StorageTransferOptions för att förbättra prestanda för dataöverföringsåtgärder. Följande kodexempel visar hur du anger värden för StorageTransferOptions
och inkluderar alternativen som en del av en BlobDownloadToOptions
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 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();
}
Mer information om hur du justerar dataöverföringsalternativ finns i Prestandajustering för uppladdningar och nedladdningar.
Ange alternativ för överföringsverifiering vid nedladdning
Du kan ange alternativ för överföringsverifiering för att säkerställa att data laddas ned korrekt och inte har manipulerats under överföringen. Alternativ för överföringsverifiering kan definieras på klientnivå med BlobClientOptions, som tillämpar valideringsalternativ på alla metoder som anropas från en BlobClient-instans.
Du kan också åsidosätta alternativ för överföringsverifiering på metodnivå med BlobDownloadToOptions. I följande kodexempel visas hur du skapar ett BlobDownloadToOptions
objekt och anger en algoritm för att generera en kontrollsumma. Kontrollsumman används sedan av tjänsten för att verifiera dataintegriteten för det nedladdade innehållet.
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();
}
I följande tabell visas tillgängliga alternativ för kontrollsummaalgoritmen enligt definitionen i StorageChecksumAlgorithm:
Name | Värde | beskrivning |
---|---|---|
Automatiskt | 0 | Rekommenderas. Tillåter att biblioteket väljer en algoritm. Olika biblioteksversioner kan välja olika algoritmer. |
Ingen | 1 | Ingen vald algoritm. Beräkna eller begär inte kontrollsummor. |
MD5 | 2 | Standard MD5-hashalgoritm. |
StorageCrc64 | 3 | Anpassad 64-bitars CRC för Azure Storage. |
Resurser
Mer information om hur du laddar ned blobar med hjälp av Azure Blob Storage-klientbiblioteket för .NET finns i följande resurser.
Kodexempel
REST API-åtgärder
Azure SDK för .NET innehåller bibliotek som bygger på Azure REST API, så att du kan interagera med REST API-åtgärder via välbekanta .NET-paradigm. Klientbiblioteksmetoderna för att ladda ned blobar använder följande REST API-åtgärd:
- Hämta blob (REST API)
Klientbiblioteksresurser
Se även
Relaterat innehåll
- Den här artikeln är en del av utvecklarguiden för Blob Storage för .NET. Mer information finns i den fullständiga listan över utvecklarguideartiklar i Skapa din .NET-app.