Delen via


Een blob downloaden met .NET

In dit artikel wordt beschreven hoe u een blob downloadt met behulp van de Azure Storage-clientbibliotheek voor .NET. U kunt blobgegevens downloaden naar verschillende bestemmingen, waaronder een lokaal bestandspad, een stroom of een tekenreeks. U kunt ook een blobstream openen en ermee lezen.

Vereisten

Uw omgeving instellen

Als u geen bestaand project hebt, ziet u in deze sectie hoe u een project instelt voor gebruik met de Azure Blob Storage-clientbibliotheek voor .NET. De stappen omvatten pakketinstallatie, het toevoegen van using instructies en het maken van een geautoriseerd clientobject. Zie Aan de slag met Azure Blob Storage en .NET voor meer informatie.

Pakketten installeren

Installeer vanuit uw projectmap pakketten voor de Azure Blob Storage- en Azure Identity-clientbibliotheken met behulp van de dotnet add package opdracht. Het Azure.Identity-pakket is nodig voor verbindingen zonder wachtwoord met Azure-services.

dotnet add package Azure.Storage.Blobs
dotnet add package Azure.Identity

Voeg using-instructies toe

Voeg deze using instructies toe aan het begin van het codebestand:

using Azure.Identity;
using Azure.Storage.Blobs;
using Azure.Storage.Blobs.Models;
using Azure.Storage.Blobs.Specialized;

Voor sommige codevoorbeelden in dit artikel zijn mogelijk aanvullende using instructies vereist.

Een clientobject maken

Als u een app wilt verbinden met Blob Storage, maakt u een exemplaar van BlobServiceClient. In het volgende voorbeeld ziet u hoe u een clientobject maakt met behulp van DefaultAzureCredential autorisatie:

public BlobServiceClient GetBlobServiceClient(string accountName)
{
    BlobServiceClient client = new(
        new Uri($"https://{accountName}.blob.core.windows.net"),
        new DefaultAzureCredential());

    return client;
}

U kunt een serviceclient registreren voor afhankelijkheidsinjectie in een .NET-app.

U kunt ook clientobjecten maken voor specifieke containers of blobs. Zie Clientobjecten maken en beheren die interactie hebben met gegevensbronnen voor meer informatie over het maken en beheren van clientobjecten.

Autorisatie

Het autorisatiemechanisme moet over de benodigde machtigingen beschikken om een downloadbewerking uit te voeren. Voor autorisatie met Microsoft Entra-id (aanbevolen) hebt u ingebouwde Azure RBAC-rol opslagblobgegevenslezer of hoger nodig. Zie de autorisatierichtlijnen voor Het ophalen van blob (REST API) voor meer informatie.

Blob downloaden

U kunt een van de volgende methoden gebruiken om een blob te downloaden:

U kunt ook een stream openen om te lezen vanuit een blob. De stream downloadt alleen de blob terwijl de stream wordt gelezen. U kunt een van de volgende methoden gebruiken:

Downloaden naar een bestandspad

In het volgende voorbeeld wordt een blob gedownload naar een lokaal bestandspad. Als de opgegeven map niet bestaat, genereert de code een DirectoryNotFoundException. Als het bestand al bestaat localFilePath, wordt het standaard overschreven tijdens volgende downloads.

public static async Task DownloadBlobToFileAsync(
    BlobClient blobClient,
    string localFilePath)
{
    await blobClient.DownloadToAsync(localFilePath);
}

Downloaden naar een stream

In het volgende voorbeeld wordt een blob gedownload door een Stream-object te maken en vervolgens naar die stream te downloaden. Als de opgegeven map niet bestaat, genereert de code een DirectoryNotFoundException.

public static async Task DownloadBlobToStreamAsync(
    BlobClient blobClient,
    string localFilePath)
{
    FileStream fileStream = File.OpenWrite(localFilePath);

    await blobClient.DownloadToAsync(fileStream);

    fileStream.Close();
}

Downloaden naar een tekenreeks

In het volgende voorbeeld wordt ervan uitgegaan dat de blob een tekstbestand is en dat de blob wordt gedownload naar een tekenreeks:

public static async Task DownloadBlobToStringAsync(BlobClient blobClient)
{
    BlobDownloadResult downloadResult = await blobClient.DownloadContentAsync();
    string blobContents = downloadResult.Content.ToString();
}

Downloaden uit een stream

In het volgende voorbeeld wordt een blob gedownload door een stream te lezen:

public static async Task DownloadBlobFromStreamAsync(
    BlobClient blobClient,
    string localFilePath)
{
    using (var stream = await blobClient.OpenReadAsync())
    {
        FileStream fileStream = File.OpenWrite(localFilePath);
        await stream.CopyToAsync(fileStream);
    }
}

Een blok-blob downloaden met configuratieopties

U kunt configuratieopties voor clientbibliotheek definiëren bij het downloaden van een blob. Deze opties kunnen worden afgestemd om de prestaties te verbeteren en de betrouwbaarheid te verbeteren. In de volgende codevoorbeelden ziet u hoe u BlobDownloadToOptions gebruikt om configuratieopties te definiëren bij het aanroepen van een downloadmethode. Houd er rekening mee dat dezelfde opties beschikbaar zijn voor BlobDownloadOptions.

Opties voor gegevensoverdracht opgeven bij downloaden

U kunt de waarden in StorageTransferOptions configureren om de prestaties voor gegevensoverdrachtbewerkingen te verbeteren. In het volgende codevoorbeeld ziet u hoe u waarden instelt voor StorageTransferOptions en de opties opneemt als onderdeel van een BlobDownloadToOptions exemplaar. De waarden in dit voorbeeld zijn niet bedoeld als aanbeveling. Als u deze waarden goed wilt afstemmen, moet u rekening houden met de specifieke behoeften van uw app.

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();
}

Zie Prestaties afstemmen voor uploads en downloads voor meer informatie over het afstemmen van opties voor het afstemmen van gegevensoverdracht.

Opties voor overdrachtsvalidatie opgeven bij downloaden

U kunt opties voor overdrachtvalidatie opgeven om ervoor te zorgen dat gegevens correct worden gedownload en niet zijn gemanipuleerd tijdens de overdracht. Validatieopties voor overdracht kunnen worden gedefinieerd op clientniveau met behulp van BlobClientOptions, waarmee validatieopties worden toegepast op alle methoden die worden aangeroepen vanuit een BlobClient-exemplaar .

U kunt ook opties voor overdrachtvalidatie op methodeniveau overschrijven met behulp van BlobDownloadToOptions. In het volgende codevoorbeeld ziet u hoe u een BlobDownloadToOptions object maakt en een algoritme opgeeft voor het genereren van een controlesom. De controlesom wordt vervolgens door de service gebruikt om de gegevensintegriteit van de gedownloade inhoud te verifiëren.

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();
}

In de volgende tabel ziet u de beschikbare opties voor het controlesomalgoritme, zoals gedefinieerd door StorageChecksumAlgorithm:

Naam Weergegeven als Beschrijving
Auto 0 Aanbevolen. Hiermee kan de bibliotheek een algoritme kiezen. Verschillende bibliotheekversies kunnen verschillende algoritmen kiezen.
Geen 1 Geen geselecteerd algoritme. Bereken of vraag controlesommen niet aan.
MD5 2 Standaard MD5-hash-algoritme.
StorageCrc64 3 Aangepaste 64-bits CRC van Azure Storage.

Resources

Zie de volgende resources voor meer informatie over het downloaden van blobs met behulp van de Azure Blob Storage-clientbibliotheek voor .NET.

REST API-bewerkingen

De Azure SDK voor .NET bevat bibliotheken die zijn gebaseerd op de Azure REST API, zodat u kunt communiceren met REST API-bewerkingen via bekende .NET-paradigma's. De clientbibliotheekmethoden voor het downloaden van blobs gebruiken de volgende REST API-bewerking:

  • Blob ophalen (REST API)

Codevoorbeelden

Clientbibliotheekbronnen

Zie ook