Mencantumkan blob dengan JavaScript
Artikel ini memperlihatkan cara mencantumkan blob menggunakan pustaka klien Azure Storage untuk JavaScript.
Prasyarat
- Contoh dalam artikel ini mengasumsikan Anda sudah menyiapkan proyek untuk bekerja dengan pustaka klien Azure Blob Storage untuk JavaScript. Untuk mempelajari tentang menyiapkan proyek Anda, termasuk penginstalan paket, mengimpor modul, dan membuat objek klien resmi untuk bekerja dengan sumber daya data, lihat Mulai menggunakan Azure Blob Storage dan JavaScript.
- Mekanisme otorisasi harus memiliki izin untuk mencantumkan blob. Untuk mempelajari lebih lanjut, lihat panduan otorisasi untuk operasi REST API berikut:
Tentang opsi daftar blob
Saat Anda mencantumkan blob dari kode, Anda dapat menentukan beberapa 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 dalam kontainer menggunakan daftar datar, panggil metode berikut:
Untuk mencantumkan blob dalam kontainer menggunakan daftar hierarkis, panggil metode berikut:
- ContainerClient.listBlobsByHierarchy
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 Penomoran halaman dengan Azure SDK untuk JavaScript.
Memfilter hasil dengan prefiks
Untuk memfilter daftar blob, tentukan string untuk prefix
properti di ContainerListBlobsOptions. String awalan dapat menyertakan satu atau lebih karakter. Azure Storage kemudian mengembalikan kontainer yang namanya dimulai dengan awalan tersebut saja. Misalnya, meneruskan string sample-
awalan hanya mengembalikan blob yang namanya dimulai dengan sample-
.
Sertakan metadata blob atau informasi lainnya
Untuk menyertakan metadata blob dengan hasil, atur includeMetadata
properti ke true
sebagai bagian dari ContainerListBlobsOptions. Anda juga dapat menyertakan rekam jepret, tag, atau versi dalam hasil dengan mengatur properti yang sesuai ke true
.
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. Contoh ini mencakup rekam jepret blob dan metadata blob, jika ada:
async function listBlobsFlat(containerClient) {
const maxPageSize = 2;
// Some options for filtering results
const listOptions = {
includeMetadata: true,
includeSnapshots: true,
prefix: '' // Filter results by blob name prefix
};
console.log("Blobs flat list (by page):");
for await (const response of containerClient
.listBlobsFlat(listOptions)
.byPage({ maxPageSize })) {
console.log("- Page:");
if (response.segment.blobItems) {
for (const blob of response.segment.blobItems) {
console.log(` - ${blob.name}`);
}
}
}
}
Output sampel mirip dengan:
Blobs flat list (by page):
- Page:
- a1
- a2
- Page:
- folder1/b1
- folder1/b2
- Page:
- folder2/sub1/c
- folder2/sub1/d
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, gunakan metode berikut:
Contoh berikut mencantumkan blob dalam kontainer yang ditentukan menggunakan daftar hierarkis. Dalam contoh ini, parameter awalan awalan diatur ke string kosong untuk mencantumkan semua blob dalam kontainer. Contoh kemudian memanggil operasi daftar secara rekursif untuk melintasi hierarki direktori virtual dan mencantumkan blob.
// Recursively list virtual folders and blobs
async function listBlobHierarchical(containerClient, delimiter='/') {
const maxPageSize = 20;
// Some options for filtering list
const listOptions = {
prefix: '' // Filter results by blob name prefix
};
let i = 1;
console.log(`Folder ${delimiter}`);
for await (const response of containerClient
.listBlobsByHierarchy(delimiter, listOptions)
.byPage({ maxPageSize })) {
console.log(` Page ${i++}`);
const segment = response.segment;
if (segment.blobPrefixes) {
// Do something with each virtual folder
for await (const prefix of segment.blobPrefixes) {
// Build new delimiter from current and next
await listBlobHierarchical(containerClient, `${delimiter}${prefix.name}`);
}
}
for (const blob of response.segment.blobItems) {
// Do something with each blob
console.log(`\tBlobItem: name - ${blob.name}`);
}
}
}
Output sampel mirip dengan:
Folder /
Page 1
BlobItem: name - a1
BlobItem: name - a2
Page 2
Folder /folder1/
Page 1
BlobItem: name - folder1/b1
BlobItem: name - folder1/b2
Folder /folder2/
Page 1
Folder /folder2/sub1/
Page 1
BlobItem: name - folder2/sub1/c
BlobItem: name - folder2/sub1/d
Page 2
BlobItem: name - folder2/sub1/e
Catatan
Rekam jepret blob tidak dapat dicantumkan dalam operasi daftar hierarkis.
Sumber
Untuk mempelajari selengkapnya tentang cara mencantumkan blob menggunakan pustaka klien Azure Blob Storage untuk JavaScript, lihat sumber daya berikut ini.
Sampel kode
- Lihat sampel kode JavaScript dan TypeScript dari artikel ini (GitHub)
Operasi REST API
Azure SDK untuk JavaScript berisi pustaka yang dibangun di atas Azure REST API, memungkinkan Anda berinteraksi dengan operasi REST API melalui paradigma JavaScript yang sudah dikenal. Metode pustaka klien untuk mencantumkan blob menggunakan operasi REST API berikut:
- Cantumkan Blob (REST API)