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 er uit lezen.

Vereisten

  • In dit artikel wordt ervan uitgegaan dat u al een project hebt ingesteld om te werken met de Azure Blob Storage-clientbibliotheek voor .NET. Zie Aan de slag met Azure Blob Storage en .NET voor meer informatie over het instellen van uw project, inclusief pakketinstallatie, het toevoegen using van instructies en het maken van een geautoriseerd clientobject.
  • Het autorisatiemechanisme moet machtigingen hebben om een downloadbewerking uit te voeren. Zie de autorisatierichtlijnen voor de volgende REST API-bewerking voor meer informatie:

Een blob downloaden

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

U kunt ook een stream openen om te lezen uit een blob. De stream downloadt alleen de blob wanneer 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 op 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 wordt de blob gedownload naar een tekenreeks:

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

Downloaden vanuit een stream

In het volgende voorbeeld wordt een blob gedownload door uit 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 met configuratieopties downloaden

U kunt configuratieopties voor de clientbibliotheek definiƫren bij het downloaden van een blob. Deze opties kunnen worden afgestemd om de prestaties en betrouwbaarheid te verbeteren. De volgende codevoorbeelden laten zien 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 gegevensoverdracht.

Opties voor overdrachtsvalidatie opgeven bij het downloaden

U kunt opties voor overdrachtsvalidatie opgeven om ervoor te zorgen dat gegevens correct worden gedownload en niet zijn gemanipuleerd tijdens de overdracht. Opties voor overdrachtsvalidatie 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 overdrachtsvalidatie 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 integriteit van de gegevens van de gedownloade inhoud te controleren.

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:

Name Waarde Beschrijving
Automatisch 0 Aanbevolen. Hiermee kan de bibliotheek een algoritme kiezen. Verschillende bibliotheekversies kunnen verschillende algoritmen kiezen.
Geen 1 Geen geselecteerd algoritme. U hoeft geen controlesommen te berekenen of aan te vragen.
MD5 2 Standaard MD5-hash-algoritme.
StorageCrc64 3 Aangepaste 64-bits Azure Storage-CRC.

Resources

Zie de volgende bronnen 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:

Codevoorbeelden

Resources voor clientbibliotheek

Zie ook