Mencantumkan blob dengan .NET
Artikel ini memperlihatkan cara mencantumkan blob menggunakan pustaka klien Azure Storage untuk .NET.
Prasyarat
- Langganan Azure - buat akun secara gratis
- Akun penyimpanan Azure - buat akun penyimpanan
- .NET SDK terbaru untuk sistem operasi Anda. Pastikan untuk mendapatkan SDK alih-alih runtime.
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 mencantumkan blob. 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 List Blobs (REST API).
Tentang opsi daftar blob
Saat Anda mencantumkan blob dari kode Anda, Anda dapat menentukan sejumlah opsi untuk mengelola bagaimana hasil dikembalikan dari Azure Storage. Anda dapat menentukan jumlah hasil yang akan dikembalikan di setiap set hasil, lalu mengambil set berikutnya. Anda dapat menentukan awalan untuk mengembalikan blob yang namanya dimulai dengan karakter atau string tersebut. Dan Anda dapat mencantumkan blob dalam struktur daftar datar, atau hierarkis. Daftar hierarki mengembalikan blob seolah-olah disusun ke dalam folder.
Untuk mencantumkan blob di akun penyimpanan, panggil salah satu metode berikut:
- BlobContainerClient.GetBlobs
- BlobContainerClient.GetBlobsAsync
- BlobContainerClient.GetBlobsByHierarchy
- BlobContainerClient.GetBlobsByHierarchyAsync
Mengelola berapa banyak hasil yang dikembalikan
Secara default, operasi daftar mengembalikan hingga 5000 hasil sekaligus, tetapi Anda dapat menentukan jumlah hasil yang Anda inginkan untuk setiap operasi daftar dikembalikan. Contoh yang disajikan dalam artikel ini memperlihatkan kepada Anda cara mengembalikan hasil di halaman. Untuk mempelajari selengkapnya tentang konsep penomoran halaman, lihat Pagination dengan Azure SDK untuk .NET.
Memfilter hasil dengan prefiks
Untuk memfilter daftar blob, tentukan string untuk parameter prefix
. String awalan dapat menyertakan satu atau lebih karakter. Azure Storage kemudian mengembalikan kontainer yang namanya dimulai dengan awalan tersebut saja.
Mengembalikan metadata
Anda dapat mengembalikan metadata blob dengan hasilnya dengan menetapkan nilai Metadata untuk enumerasi BlobTraits.
Daftar datar versus daftar hierarkis
Blob di Azure Storage diatur dalam paradigma datar, bukan paradigma hierarkis (seperti sistem file klasik). Namun, Anda dapat mengatur blob ke direktori virtual untuk meniru struktur folder. Direktori virtual merupakan bagian dari nama blob dan ditunjukkan oleh karakter pemisah.
Untuk mengatur blob ke dalam direktori virtual, gunakan karakter pemisah dalam nama blob. Karakter pemisah default adalah garis miring (/), tetapi Anda dapat menentukan karakter apa pun sebagai pemisah.
Jika Anda memberi nama blob Anda menggunakan pemisah, maka Anda dapat memilih untuk mencantumkan blob secara hierarkis. Untuk operasi daftar hierarkis, Azure Storage mengembalikan direktori dan blob virtual di bawah objek induk. Anda dapat memanggil operasi daftar secara rekursif untuk melintasi hierarki, mirip dengan cara Anda melintasi sistem file klasik secara terprogram.
Menggunakan daftar datar
Secara default, operasi daftar mengembalikan blob dalam daftar datar. Dalam daftar datar, blob tidak diatur oleh direktori virtual.
Contoh berikut mencantumkan blob dalam kontainer yang ditentukan menggunakan daftar datar, dengan ukuran segmen opsional yang ditentukan, dan menulis nama blob ke jendela konsol.
private static async Task ListBlobsFlatListing(BlobContainerClient blobContainerClient,
int? segmentSize)
{
try
{
// Call the listing operation and return pages of the specified size.
var resultSegment = blobContainerClient.GetBlobsAsync()
.AsPages(default, segmentSize);
// Enumerate the blobs returned for each page.
await foreach (Page<BlobItem> blobPage in resultSegment)
{
foreach (BlobItem blobItem in blobPage.Values)
{
Console.WriteLine("Blob name: {0}", blobItem.Name);
}
Console.WriteLine();
}
}
catch (RequestFailedException e)
{
Console.WriteLine(e.Message);
Console.ReadLine();
throw;
}
}
Output sampel mirip dengan:
Blob name: FolderA/blob1.txt
Blob name: FolderA/blob2.txt
Blob name: FolderA/blob3.txt
Blob name: FolderA/FolderB/blob1.txt
Blob name: FolderA/FolderB/blob2.txt
Blob name: FolderA/FolderB/blob3.txt
Blob name: FolderA/FolderB/FolderC/blob1.txt
Blob name: FolderA/FolderB/FolderC/blob2.txt
Blob name: FolderA/FolderB/FolderC/blob3.txt
Catatan
Contoh output yang ditampilkan mengasumsikan bahwa Anda memiliki akun penyimpanan dengan namespace datar. Jika Anda telah mengaktifkan fitur namespace hierarkis untuk akun penyimpanan Anda, direktori tidak virtual. Sebaliknya, mereka adalah objek konkret dan independen. Akibatnya, direktori muncul dalam daftar sebagai blob panjang nol.
Untuk opsi daftar alternatif saat bekerja dengan namespace hierarkis, lihat Mencantumkan konten direktori (Azure Data Lake Storage).
Menggunakan daftar hierarkis
Saat Anda memanggil operasi daftar secara hierarkis, Azure Storage mengembalikan direktori dan blob virtual di tingkat hierarki pertama.
Untuk mencantumkan blob secara hierarkis, panggil metode BlobContainerClient.GetBlobsByHierarchy, atau metode BlobContainerClient.GetBlobsByHierarchyAsync.
Contoh berikut mencantumkan blob dalam kontainer yang ditentukan menggunakan daftar hierarki, dengan ukuran segmen opsional yang ditentukan, dan menulis nama blob ke jendela konsol.
private static async Task ListBlobsHierarchicalListing(BlobContainerClient container,
string prefix,
int? segmentSize)
{
try
{
// Call the listing operation and return pages of the specified size.
var resultSegment = container.GetBlobsByHierarchyAsync(prefix:prefix, delimiter:"/")
.AsPages(default, segmentSize);
// Enumerate the blobs returned for each page.
await foreach (Page<BlobHierarchyItem> blobPage in resultSegment)
{
// A hierarchical listing may return both virtual directories and blobs.
foreach (BlobHierarchyItem blobhierarchyItem in blobPage.Values)
{
if (blobhierarchyItem.IsPrefix)
{
// Write out the prefix of the virtual directory.
Console.WriteLine("Virtual directory prefix: {0}", blobhierarchyItem.Prefix);
// Call recursively with the prefix to traverse the virtual directory.
await ListBlobsHierarchicalListing(container, blobhierarchyItem.Prefix, null);
}
else
{
// Write out the name of the blob.
Console.WriteLine("Blob name: {0}", blobhierarchyItem.Blob.Name);
}
}
Console.WriteLine();
}
}
catch (RequestFailedException e)
{
Console.WriteLine(e.Message);
Console.ReadLine();
throw;
}
}
Output sampel mirip dengan:
Virtual directory prefix: FolderA/
Blob name: FolderA/blob1.txt
Blob name: FolderA/blob2.txt
Blob name: FolderA/blob3.txt
Virtual directory prefix: FolderA/FolderB/
Blob name: FolderA/FolderB/blob1.txt
Blob name: FolderA/FolderB/blob2.txt
Blob name: FolderA/FolderB/blob3.txt
Virtual directory prefix: FolderA/FolderB/FolderC/
Blob name: FolderA/FolderB/FolderC/blob1.txt
Blob name: FolderA/FolderB/FolderC/blob2.txt
Blob name: FolderA/FolderB/FolderC/blob3.txt
Catatan
Rekam jepret blob tidak dapat dicantumkan dalam operasi daftar hierarkis.
Mencantumkan versi blob atau rekam jepret
Untuk membuat daftar versi blob atau snapshot, tentukan parameter BlobStates dengan bidang Versi atau Snapshot. Versi dan rekam jepret dicantumkan dari yang terlama ke terbaru.
Contoh kode berikut menunjukkan cara mencantumkan versi blob.
private static void ListBlobVersions(BlobContainerClient blobContainerClient,
string blobName)
{
try
{
// Call the listing operation, specifying that blob versions are returned.
// Use the blob name as the prefix.
var blobVersions = blobContainerClient.GetBlobs
(BlobTraits.None, BlobStates.Version, prefix: blobName)
.OrderByDescending(version => version.VersionId).Where(blob => blob.Name == blobName);
// Construct the URI for each blob version.
foreach (var version in blobVersions)
{
BlobUriBuilder blobUriBuilder = new BlobUriBuilder(blobContainerClient.Uri)
{
BlobName = version.Name,
VersionId = version.VersionId
};
if ((bool)version.IsLatestVersion.GetValueOrDefault())
{
Console.WriteLine("Current version: {0}", blobUriBuilder);
}
else
{
Console.WriteLine("Previous version: {0}", blobUriBuilder);
}
}
}
catch (RequestFailedException e)
{
Console.WriteLine(e.Message);
Console.ReadLine();
throw;
}
}
Sumber
Untuk mempelajari selengkapnya tentang cara mencantumkan blob menggunakan pustaka klien Azure Blob Storage untuk .NET, lihat sumber daya berikut ini.
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 mencantumkan blob menggunakan operasi REST API berikut:
- Cantumkan Blob (REST API)
Sumber daya pustaka klien
Lihat juga
Konten terkait
- 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.