.NET ile blob indirme

Bu makalede.NET için Azure Depolama istemci kitaplığını kullanarak blob indirme işlemi gösterilmektedir. Blob verilerini yerel dosya yolu, akış veya metin dizesi gibi çeşitli hedeflere indirebilirsiniz. Ayrıca blob akışını açabilir ve buradan okuyabilirsiniz.

Önkoşullar

  • Bu makalede, .NET için Azure Blob Depolama istemci kitaplığıyla çalışmak üzere ayarlanmış bir projeniz olduğu varsayılır. Paket yükleme, yönerge ekleme using ve yetkili istemci nesnesi oluşturma dahil olmak üzere projenizi ayarlama hakkında bilgi edinmek için bkz. Azure Blob Depolama ve .NET ile çalışmaya başlama.
  • Yetkilendirme mekanizmasının indirme işlemi gerçekleştirme izinleri olmalıdır. Daha fazla bilgi edinmek için aşağıdaki REST API işlemi için yetkilendirme kılavuzuna bakın:

Blobu indirme

Blob indirmek için aşağıdaki yöntemlerden herhangi birini kullanabilirsiniz:

Blobdan okumak için bir akış da açabilirsiniz. Akış yalnızca akış okundukça blobu indirir. Aşağıdaki yöntemlerden birini kullanabilirsiniz:

Dosya yoluna indirme

Aşağıdaki örnek bir blobu yerel dosya yoluna indirir. Belirtilen dizin yoksa, kod bir DirectoryNotFoundException oluşturur. dosya adresinde zaten varsa localFilePath, sonraki indirmeler sırasında varsayılan olarak üzerine yazılır.

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

Akışa indirme

Aşağıdaki örnekte stream nesnesi oluşturarak bir blob indirilir ve ardından bu akışa indirilir. Belirtilen dizin yoksa, kod bir DirectoryNotFoundException oluşturur.

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

    await blobClient.DownloadToAsync(fileStream);

    fileStream.Close();
}

Dizeye indirme

Aşağıdaki örnekte blob'un bir metin dosyası olduğu varsayılır ve blob bir dizeye indirilir:

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

Akıştan indirme

Aşağıdaki örnek bir akıştan okuyarak blob indirir:

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

Yapılandırma seçenekleriyle blok blobu indirme

Blob indirirken istemci kitaplığı yapılandırma seçeneklerini tanımlayabilirsiniz. Bu seçenekler performansı geliştirmek ve güvenilirliği artırmak için ayarlanabilir. Aşağıdaki kod örnekleri, bir indirme yöntemini çağırırken yapılandırma seçeneklerini tanımlamak için BlobDownloadToOptions'ın nasıl kullanılacağını gösterir. BlobDownloadOptions için de aynı seçeneklerin kullanılabildiğini unutmayın.

İndirilirken veri aktarımı seçeneklerini belirtme

Veri aktarımı işlemlerinin performansını artırmak için StorageTransferOptions içindeki değerleri yapılandırabilirsiniz. Aşağıdaki kod örneği, için StorageTransferOptions değerleri ayarlamayı ve seçenekleri bir örneğin parçası BlobDownloadToOptions olarak eklemeyi gösterir. Bu örnekte sağlanan değerlerin bir öneri olması amaçlanmamıştır. Bu değerleri düzgün bir şekilde ayarlamak için uygulamanızın belirli gereksinimlerini dikkate almanız gerekir.

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

Veri aktarımı seçeneklerini ayarlama hakkında daha fazla bilgi edinmek için bkz. Karşıya yüklemeler ve indirmeler için performans ayarlama.

İndirmede aktarım doğrulama seçeneklerini belirtme

Aktarım sırasında verilerin düzgün şekilde indirildiğinden ve üzerinde oynanmadığından emin olmak için aktarım doğrulama seçeneklerini belirtebilirsiniz. Aktarım doğrulama seçenekleri, blobclient örneğinden çağrılan tüm yöntemlere doğrulama seçenekleri uygulayan BlobClientOptions kullanılarak istemci düzeyinde tanımlanabilir.

BlobDownloadToOptions kullanarak yöntem düzeyinde aktarım doğrulama seçeneklerini de geçersiz kılabilirsiniz. Aşağıdaki kod örneği, bir BlobDownloadToOptions nesnenin nasıl oluşturulacağını ve sağlama toplamı oluşturmak için bir algoritmanın nasıl belirtileceğini gösterir. Sağlama toplamı daha sonra hizmet tarafından indirilen içeriğin veri bütünlüğünü doğrulamak için kullanılır.

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

Aşağıdaki tabloda , StorageChecksumAlgorithm tarafından tanımlanan sağlama toplamı algoritması için kullanılabilir seçenekler gösterilmektedir:

Name Değer Açıklama
Otomatik 0 Önerilen. Kitaplığın bir algoritma seçmesine izin verir. Farklı kitaplık sürümleri farklı algoritmalar seçebilir.
Hiçbiri 1 Seçili algoritma yok. Sağlama toplamlarını hesaplamayın veya istemeyin.
MD5 2 Standart MD5 karma algoritması.
StorageCrc64 3 Azure Depolama özel 64 bit CRC.

Kaynaklar

.NET için Azure Blob Depolama istemci kitaplığını kullanarak blobları indirme hakkında daha fazla bilgi edinmek için aşağıdaki kaynaklara bakın.

REST API işlemleri

.NET için Azure SDK, Azure REST API'sinin üzerine inşa edilerek rest API işlemleriyle alıştığınız .NET paradigmalarıyla etkileşim kurmanızı sağlayan kitaplıklar içerir. Blobları indirmek için istemci kitaplığı yöntemleri aşağıdaki REST API işlemini kullanır:

Kod örnekleri

İstemci kitaplığı kaynakları

Ayrıca bkz.