Bagikan melalui


Mengunduh blob dengan .NET

Artikel ini memperlihatkan cara mengunduh blob menggunakan pustaka klien Azure Storage untuk .NET. Anda dapat mengunduh data blob ke berbagai tujuan, termasuk jalur file lokal, aliran, atau string teks. Anda juga dapat membuka aliran blob dan membacanya.

Prasyarat

Menyiapkan lingkungan Anda

Jika Anda tidak memiliki proyek yang sudah ada, bagian ini menunjukkan kepada Anda cara menyiapkan proyek untuk bekerja dengan pustaka klien Azure Blob Storage untuk .NET. Langkah-langkahnya termasuk penginstalan paket, menambahkan arahan using , dan membuat objek klien resmi. Untuk detailnya, lihat Mulai menggunakan Azure Blob Storage dan .NET.

Memasang paket

Dari direktori proyek Anda, instal paket untuk pustaka klien Azure Blob Storage dan Azure Identity menggunakan dotnet add package perintah . Paket Azure.Identity diperlukan untuk koneksi tanpa kata sandi ke layanan Azure.

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

Tambahkan direktif using

Tambahkan arahan ini using ke bagian atas file kode Anda:

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

Beberapa contoh kode dalam artikel ini mungkin memerlukan arahan tambahan using .

Membuat objek klien

Untuk menyambungkan aplikasi ke Blob Storage, buat instans BlobServiceClient. Contoh berikut menunjukkan cara membuat objek klien menggunakan DefaultAzureCredential untuk otorisasi:

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

    return client;
}

Anda dapat mendaftarkan klien layanan untuk injeksi dependensi di aplikasi .NET.

Anda juga dapat membuat objek klien untuk kontainer atau blob tertentu. Untuk mempelajari selengkapnya tentang membuat dan mengelola objek klien, lihat Membuat dan mengelola objek klien yang berinteraksi dengan sumber daya data.

Authorization

Mekanisme otorisasi harus memiliki izin yang diperlukan untuk melakukan operasi pengunduhan. Untuk otorisasi dengan MICROSOFT Entra ID (disarankan), Anda memerlukan peran bawaan Azure RBAC Storage Blob Data Reader atau yang lebih tinggi. Untuk mempelajari lebih lanjut, lihat panduan otorisasi untuk Get Blob (REST API).

Mengunduh blob

Anda dapat menggunakan salah satu metode berikut untuk mengunduh blob:

Anda juga dapat membuka aliran untuk membaca dari blob. Aliran hanya mengunduh blob saat aliran dibaca. Anda dapat menggunakan salah satu dari metode berikut:

Mengunduh ke jalur file

Contoh berikut mengunduh blob ke jalur file lokal. Jika direktori yang ditentukan tidak ada, kode akan melempar DirectoryNotFoundException. Jika file sudah ada di , file akan ditimpa localFilePathsecara default selama unduhan berikutnya.

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

Mengunduh ke aliran

Contoh berikut mengunduh blob dengan membuat objek Stream lalu mengunduh ke aliran tersebut. Jika direktori yang ditentukan tidak ada, kode akan melempar DirectoryNotFoundException.

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

    await blobClient.DownloadToAsync(fileStream);

    fileStream.Close();
}

Mengunduh ke string

Contoh berikut mengasumsikan bahwa blob adalah file teks, dan mengunduh blob ke string:

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

Mengunduh dari aliran

Contoh berikut mengunduh blob dengan membaca dari aliran:

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

Mengunduh blob blok dengan opsi konfigurasi

Anda dapat menentukan opsi konfigurasi pustaka klien saat mengunduh blob. Opsi ini dapat disetel untuk meningkatkan performa dan meningkatkan keandalan. Contoh kode berikut menunjukkan cara menggunakan BlobDownloadToOptions untuk menentukan opsi konfigurasi saat memanggil metode unduhan. Perhatikan bahwa opsi yang sama tersedia untuk BlobDownloadOptions.

Tentukan opsi transfer data saat diunduh

Anda dapat mengonfigurasi nilai di StorageTransferOptions untuk meningkatkan performa operasi transfer data. Contoh kode berikut menunjukkan cara mengatur nilai untuk StorageTransferOptions dan menyertakan opsi sebagai bagian BlobDownloadToOptions dari instans. Nilai yang disediakan dalam sampel ini tidak dimaksudkan untuk menjadi rekomendasi. Untuk menyetel nilai-nilai ini dengan benar, Anda perlu mempertimbangkan kebutuhan spesifik aplikasi Anda.

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

Untuk mempelajari selengkapnya tentang menyetel opsi transfer data, lihat Penyetelan performa untuk unggahan dan unduhan.

Tentukan opsi validasi transfer saat diunduh

Anda dapat menentukan opsi validasi transfer untuk membantu memastikan bahwa data diunduh dengan benar dan belum dirusak selama transit. Opsi validasi transfer dapat ditentukan di tingkat klien menggunakan BlobClientOptions, yang menerapkan opsi validasi ke semua metode yang dipanggil dari instans BlobClient .

Anda juga dapat mengganti opsi validasi transfer di tingkat metode menggunakan BlobDownloadToOptions. Contoh kode berikut menunjukkan cara membuat BlobDownloadToOptions objek dan menentukan algoritma untuk membuat checksum. Checksum kemudian digunakan oleh layanan untuk memverifikasi integritas data konten yang diunduh.

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

Tabel berikut ini memperlihatkan opsi yang tersedia untuk algoritma checksum, seperti yang ditentukan oleh StorageChecksumAlgorithm:

Nama Nilai Deskripsi
Otomatis 0 Disarankan. Memungkinkan pustaka memilih algoritma. Versi pustaka yang berbeda dapat memilih algoritma yang berbeda.
Tidak 1 Tidak ada algoritma yang dipilih. Jangan hitung atau minta checksum.
MD5 2 Algoritma hash MD5 standar.
StorageCrc64 3 CRC kustom Azure Storage 64-bit.

Sumber

Untuk mempelajari selengkapnya tentang cara mengunduh blob menggunakan pustaka klien Azure Blob Storage untuk .NET, lihat sumber daya berikut ini.

Sampel kode

Operasi REST API

Azure SDK untuk .NET berisi pustaka yang dibangun di atas Azure REST API, memungkinkan Anda berinteraksi dengan operasi REST API melalui paradigma .NET yang sudah dikenal. Metode pustaka klien untuk mengunduh blob menggunakan operasi REST API berikut:

Sumber daya pustaka klien

Lihat juga

  • Artikel ini adalah bagian dari panduan pengembang Blob Storage untuk .NET. Untuk mempelajari lebih lanjut, lihat daftar lengkap artikel panduan pengembang di Membangun aplikasi .NET Anda.