Blob letöltése .NET-tel

Ez a cikk bemutatja, hogyan tölthet le egy blobot a .NET-hez készült Azure Storage ügyfélkódtár használatával. Blobadatokat különböző célhelyekre tölthet le, például helyi fájlelérési utat, streamet vagy szöveges sztringet. Megnyithat egy blobstreamet is, és onnan olvashat.

Előfeltételek

  • Ez a cikk feltételezi, hogy már van beállítva egy projekt, amely a .NET Azure Blob Storage ügyfélkódtárával működik. A projekt beállításáról, beleértve a csomagtelepítést, az irányelvek hozzáadását using és az engedélyezett ügyfélobjektumok létrehozását, olvassa el az Első lépések a Azure Blob Storage és a .NET használatával című témakört.
  • Az engedélyezési mechanizmusnak rendelkeznie kell a letöltési művelet végrehajtásához szükséges engedélyekkel. További információért tekintse meg az alábbi REST API-művelet engedélyezési útmutatóját:

Blob letöltése

A blobok letöltéséhez az alábbi módszerek bármelyikét használhatja:

Megnyithat egy streamet is, amely egy blobból olvas. A stream csak akkor tölti le a blobot, amikor a streamet a rendszer beolvassa. Az alábbi módszerek bármelyikét használhatja:

Letöltés fájlelérési útra

Az alábbi példa egy blobot tölt le egy helyi fájl elérési útjára. Ha a megadott könyvtár nem létezik, a kód egy DirectoryNotFoundException kivételt ad. Ha a fájl már létezik a helyen localFilePath, a következő letöltések során alapértelmezés szerint felülírja.

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

Letöltés streambe

Az alábbi példa letölt egy blobot egy Stream-objektum létrehozásával, majd letölti az adott streambe. Ha a megadott könyvtár nem létezik, a kód egy DirectoryNotFoundException kivételt ad.

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

    await blobClient.DownloadToAsync(fileStream);

    fileStream.Close();
}

Letöltés sztringre

Az alábbi példa feltételezi, hogy a blob egy szövegfájl, és letölti a blobot egy sztringbe:

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

Letöltés streamből

Az alábbi példa egy blobot tölt le egy streamből való olvasással:

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

Blokkblob letöltése konfigurációs beállításokkal

Blob letöltésekor megadhatja az ügyfélkódtár konfigurációs beállításait. Ezek a beállítások a teljesítmény javítása és a megbízhatóság növelése érdekében hangolhatók. Az alábbi kódpéldák bemutatják, hogyan használható a BlobDownloadToOptions a konfigurációs beállítások meghatározására egy letöltési módszer meghívásakor. Vegye figyelembe, hogy ugyanezek a lehetőségek érhetők el a BlobDownloadOptions esetében is.

Adatátviteli beállítások megadása letöltéskor

A StorageTransferOptions értékeit konfigurálhatja az adatátviteli műveletek teljesítményének javítása érdekében. Az alábbi példakód bemutatja, hogyan állíthat be értékeket egy példányhoz StorageTransferOptions , és hogyan foglalhatja bele a beállításokat BlobDownloadToOptions . Az ebben a mintában megadott értékek nem javaslatok. Az értékek megfelelő hangolásához figyelembe kell vennie az alkalmazás adott igényeit.

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

Az adatátviteli lehetőségek finomhangolásával kapcsolatos további információkért lásd: Feltöltések és letöltések teljesítményhangolása.

Átadás-ellenőrzési beállítások megadása letöltéskor

Az átvitelérvényesítési beállítások megadásával biztosíthatja, hogy az adatok megfelelően töltődjenek le, és ne legyenek illetéktelenek az átvitel során. Az átadás-ellenőrzési beállítások ügyfélszinten definiálhatók a BlobClientOptions használatával, amely érvényesítési beállításokat alkalmaz a BlobClient-példányból meghívott összes metódusra.

A BlobDownloadToOptions használatával felülbírálhatja az átvitelérvényesítési beállításokat a metódus szintjén. Az alábbi példakód bemutatja, hogyan hozhat létre objektumot BlobDownloadToOptions , és hogyan adhat meg algoritmust ellenőrzőösszeg létrehozásához. Ezt követően a szolgáltatás az ellenőrzőösszeget használja a letöltött tartalom adatintegritásának ellenőrzésére.

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

Az alábbi táblázat a StorageChecksumAlgorithm által meghatározott ellenőrzőösszeg-algoritmus elérhető lehetőségeit mutatja be:

Name Érték Leírás
Automatikus 0 Ajánlott. Lehetővé teszi, hogy a kódtár algoritmust válasszon. A kódtár különböző verziói különböző algoritmusokat választhatnak.
None 1 Nincs kijelölt algoritmus. Ne számítsa ki vagy kérje le az ellenőrzőösszegeket.
MD5 2 Standard MD5 kivonatolási algoritmus.
StorageCrc64 3 Egyéni 64 bites Azure Storage CRC.

Források

A blobok .NET-hez készült Azure Blob Storage-ügyfélkódtár használatával történő letöltéséről az alábbi forrásokban talál további információt.

REST API-műveletek

A .NET-hez készült Azure SDK olyan kódtárakat tartalmaz, amelyek az Azure REST API-ra épülnek, lehetővé téve a REST API-műveletek használatát a jól ismert .NET-paradigmákon keresztül. A blobok letöltéséhez használt ügyfélkódtár-metódusok a következő REST API-műveletet használják:

Kódminták

Ügyfélkódtár erőforrásai

Lásd még