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 memiliki proyek yang disiapkan 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, 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, buat ContainerClient lalu panggil salah satu metode berikut:

Fungsionalitas terkait dapat ditemukan dalam metode berikut:

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.

const listOptions = {
    includeCopy: false,                 // include metadata from previous copies
    includeDeleted: false,              // include deleted blobs 
    includeDeletedWithVersions: false,  // include deleted blobs with versions
    includeLegalHold: false,            // include legal hold
    includeMetadata: true,              // include custom metadata
    includeSnapshots: true,             // include snapshots
    includeTags: true,                  // include indexable tags
    includeUncommitedBlobs: false,      // include uncommitted blobs
    includeVersions: false,             // include all blob version
    prefix: ''                          // filter by blob name prefix
};

Mengembalikan metadata

Anda dapat mengembalikan metadata blob beserta hasilnya dengan menentukan properti includeMetadata dalam opsi daftar.

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.

async function listBlobsFlatWithPageMarker(containerClient) {

  // page size - artificially low as example
  const maxPageSize = 2;

  let i = 1;
  let marker;

  // some options for filtering list
  const listOptions = {
    includeMetadata: false,
    includeSnapshots: false,
    includeTags: false,
    includeVersions: false,
    prefix: ''
  };

  let iterator = containerClient.listBlobsFlat(listOptions).byPage({ maxPageSize });
  let response = (await iterator.next()).value;

  // Prints blob names
  for (const blob of response.segment.blobItems) {
    console.log(`Flat listing: ${i++}: ${blob.name}`);
  }

  // Gets next marker
  marker = response.continuationToken;

  // Passing next marker as continuationToken    
  iterator = containerClient.listBlobsFlat().byPage({ 
      continuationToken: marker, 
      maxPageSize: maxPageSize * 2 
  });
  response = (await iterator.next()).value;

  // Prints next blob names
  for (const blob of response.segment.blobItems) {
    console.log(`Flat listing: ${i++}: ${blob.name}`);
  }
}

Output sampel mirip dengan:

Flat listing: 1: a1
Flat listing: 2: a2
Flat listing: 3: folder1/b1
Flat listing: 4: folder1/b2
Flat listing: 5: folder2/sub1/c
Flat listing: 6: folder2/sub1/d

Catatan

Sampel 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 Gen2).

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.listBlobsByHierarchy.

Contoh berikut mencantumkan blob dalam kontainer yang ditentukan menggunakan daftar hierarki, dengan ukuran segmen opsional yang ditentukan, dan menulis nama blob ke jendela konsol.

// Recursively list virtual folders and blobs
// Pass an empty string for prefixStr to list everything in the container
async function listBlobHierarchical(containerClient, prefixStr) {

  // page size - artificially low as example
  const maxPageSize = 2;

  // some options for filtering list
  const listOptions = {
    includeMetadata: false,
    includeSnapshots: false,
    includeTags: false,
    includeVersions: false,
    prefix: prefixStr
  };

  let delimiter = '/';
  let i = 1;
  console.log(`Folder ${delimiter}${prefixStr}`);

  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 prefix from current virtual folder
        await listBlobHierarchical(containerClient, 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.

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:

Sampel kode

Sumber daya pustaka klien

Lihat juga