Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
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 pilihan pencatatan 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 menunjukkan kepada Anda cara menampilkan hasil dalam bentuk 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 hanya mengembalikan blob yang namanya diawali dengan awalan tersebut. Misalnya, meneruskan awalan string sample- 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 linear versus daftar hierarkis
Blob di Azure Storage diatur dalam paradigma datar, bukan paradigma hierarkis (seperti sistem file klasik). Namun, Anda dapat mengatur blob ke dalam 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 menamai blob Anda menggunakan delimiter, 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 dengan menggunakan daftar datar. Contoh ini mencakup cuplikan 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}`);
}
}
}
}
Hasil contoh adalah 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 mengaktifkan fitur namespace hierarkis untuk akun penyimpanan Anda, direktori tidak bersifat virtual. Sebaliknya, mereka adalah objek konkret yang 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:
- BlobContainerClient.listBlobsByHierarchy (daftarBlobsBerdasarkanHierarki)
Contoh berikut mencantumkan blob dalam kontainer yang ditentukan menggunakan daftar hierarkis. Dalam contoh ini, parameter 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}`);
}
}
}
Hasil contoh adalah 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
Snapshot blob tidak dapat ditampilkan dalam operasi pembuatan daftar hierarkis.
Daftar blob dalam format Apache Arrow (pratinjau)
Important
Pencantuman blob dalam format Apache Arrow saat ini masih dalam PREVIEW. Skenario ini memerlukan versi beta (pratinjau) dari perpustakaan klien Azure Blob Storage untuk JavaScript (misalnya, @azure/storage-blob12.34.0-beta.1 atau rilis pratinjau yang lebih baru). Fitur pratinjau disediakan tanpa perjanjian tingkat layanan dan tidak disarankan untuk beban kerja produksi. Beberapa fitur mungkin tidak didukung, atau memiliki kemampuan yang terbatas. Untuk informasi lebih lanjut, lihat Supplemental Terms of Use for Microsoft Azure Previews.
Kemampuan ini dibangun di atas API yang sudah ada List Blobs . Alih-alih menggunakan XML default, format Apache Arrow yang ringkas dan kolom digunakan sebagai format respons pada kabel. Anda mengaktifkannya dengan menetapkan satu opsi pada pemanggilan daftar kontainer. JavaScript SDK mendekode Apache Arrow di belakang layar dan tetap mengembalikan objek item blob yang sama. Pendekatan ini meningkatkan throughput listing dan mengurangi CPU sisi klien saat melakukan enumerasi kontainer besar. Ini mempertahankan kontrak respons yang menjadi dasar aplikasi.
Warning
Mencantumkan blob dalam format Apache Arrow tidak didukung pada akun penyimpanan yang memiliki namespace hierarkis (Azure Data Lake Storage) diaktifkan.
Untuk meminta hasil yang diformat Apache Arrow, atur responseFormat properti opsi listing ke StorageResponseFormat.Arrow, lalu teruskan opsi tersebut ke ContainerClient.listBlobsFlat. Impor StorageResponseFormat enum dari @azure/storage-blob.
Contoh berikut mencantumkan blob dalam kontainer dan meminta hasilnya dalam format Apache Arrow:
const { StorageResponseFormat } = require("@azure/storage-blob");
const options = {
prefix: "FolderA/",
responseFormat: StorageResponseFormat.Arrow,
};
for await (const blob of containerClient.listBlobsFlat(options)) {
console.log("Blob name: " + blob.name);
}
Sumber
Untuk mempelajari lebih lanjut tentang cara mencantumkan blob menggunakan pustaka klien Azure Blob Storage untuk JavaScript, lihat sumber daya berikut.
Sampel kode
- Lihat contoh kode JavaScript dan TypeScript dari artikel ini di GitHub.
Operasi REST API
Azure SDK untuk JavaScript berisi pustaka yang dibangun di atas Azure REST API. Dengan menggunakan pustaka ini, Anda dapat berinteraksi dengan operasi REST API melalui paradigma JavaScript yang sudah dikenal. Metode pustaka klien untuk mencantumkan blob menggunakan operasi REST API berikut:
- Tampilkan Blob (REST API)