JavaScript ile blobları listeleme

Bu makalede , JavaScript için Azure Depolama istemci kitaplığını kullanarak blobların nasıl liste adı verilmektedir.

Önkoşullar

  • Bu makaledeki örneklerde, JavaScript için Azure Blob Depolama istemci kitaplığıyla çalışmak üzere ayarlanmış bir projeniz olduğu varsayılır. Paket yükleme, modülleri içeri aktarma ve veri kaynaklarıyla çalışacak yetkili bir istemci nesnesi oluşturma gibi projenizi ayarlama hakkında bilgi edinmek için bkz. Azure Blob Depolama ve JavaScript ile çalışmaya başlama.
  • Yetkilendirme mekanizmasının blobları listeleme izinleri olmalıdır. Daha fazla bilgi edinmek için aşağıdaki REST API işlemi için yetkilendirme kılavuzuna bakın:

Blob listeleme seçenekleri hakkında

Kodunuzdan blobları listelediğinizde, Sonuçların Azure Depolama'dan nasıl döndürüleceğini yönetmek için bir dizi seçenek belirtebilirsiniz. Her sonuç kümesinde döndürülecek sonuç sayısını belirtebilir ve ardından sonraki kümeleri alabilirsiniz. Adları bu karakter veya dizeyle başlayan blobları döndürmek için bir ön ek belirtebilirsiniz. Ayrıca blobları düz bir listeleme yapısında veya hiyerarşik olarak listeleyebilirsiniz. Hiyerarşik bir liste, blobları klasörler halinde düzenlenmiş gibi döndürür.

Depolama hesabındaki blobları listelemek için bir ContainerClient oluşturun ve şu yöntemlerden birini çağırın:

İlgili işlevler aşağıdaki yöntemlerde bulunabilir:

Kaç sonuç döndürülür yönetme

Varsayılan olarak, bir listeleme işlemi bir kerede en fazla 5000 sonuç döndürür, ancak her listeleme işleminin döndürmesini istediğiniz sonuç sayısını belirtebilirsiniz. Bu makalede sunulan örnekler, sonuçları sayfalarda nasıl döndürebileceğinizi gösterir. Sayfalandırma kavramları hakkında daha fazla bilgi edinmek için bkz. JavaScript için Azure SDK ile sayfalandırma.

Sonuçları ön ek ile filtreleme

Blob listesini filtrelemek için ContainerListBlobsOptions içinde özelliği için prefix bir dize belirtin. Ön ek dizesi bir veya daha fazla karakter içerebilir. Daha sonra Azure Depolama yalnızca adları bu ön ek ile başlayan blobları döndürür.

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

Meta verileri döndürme

Liste seçeneklerinde özelliğini belirterek includeMetadata blob meta verilerini sonuçlarla döndürebilirsiniz.

Düz listeleme ve hiyerarşik listeleme karşılaştırması

Azure Depolama'daki bloblar hiyerarşik paradigma (klasik dosya sistemi gibi) yerine düz bir paradigma halinde düzenlenir. Ancak, bir klasör yapısını taklit etmek için blobları sanal dizinler halinde düzenleyebilirsiniz. Sanal dizin blob adının bir bölümünü oluşturur ve sınırlayıcı karakteriyle gösterilir.

Blobları sanal dizinler halinde düzenlemek için blob adında bir sınırlayıcı karakteri kullanın. Varsayılan sınırlayıcı karakteri eğik çizgidir (/) ancak sınırlayıcı olarak herhangi bir karakteri belirtebilirsiniz.

Bloblarınızı sınırlayıcı kullanarak adlandırıyorsanız blobları hiyerarşik olarak listelemeyi seçebilirsiniz. Hiyerarşik listeleme işlemi için Azure Depolama, üst nesnenin altındaki tüm sanal dizinleri ve blobları döndürür. Klasik dosya sisteminde program aracılığıyla geçiş yaptığınıza benzer şekilde hiyerarşide gezinmek için listeleme işlemini yinelemeli olarak çağırabilirsiniz.

Düz liste kullanma

Varsayılan olarak, listeleme işlemi blobları düz bir listede döndürür. Düz bir listede bloblar sanal dizine göre düzenlenmez.

Aşağıdaki örnek, belirtilen kapsayıcıdaki blobları düz bir liste kullanarak listeler.

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

Örnek çıktı şuna benzer:

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

Not

Gösterilen örnek çıktı, düz ad alanına sahip bir depolama hesabınız olduğunu varsayar. Depolama hesabınız için hiyerarşik ad alanı özelliğini etkinleştirdiyseniz dizinler sanal değildir. Bunun yerine, bunlar somut, bağımsız nesnelerdir. Sonuç olarak, dizinler listede sıfır uzunlukta bloblar olarak görünür.

Hiyerarşik ad alanıyla çalışırken alternatif bir listeleme seçeneği için bkz. Dizin içeriğini listeleme (Azure Data Lake Storage 2. Nesil).

Hiyerarşik liste kullanma

Listeleme işlemini hiyerarşik olarak çağırdığınızda, Azure Depolama hiyerarşinin ilk düzeyinde sanal dizinleri ve blobları döndürür.

Blobları hiyerarşik olarak listelemek için BlobContainerClient.listBlobsByHierarchy yöntemini çağırın.

Aşağıdaki örnek, belirtilen kapsayıcıdaki blobları isteğe bağlı bir kesim boyutu belirtilen hiyerarşik bir liste kullanarak listeler ve blob adını konsol penceresine yazar.

// 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}`);
    }
  }
}

Örnek çıktı şuna benzer:

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

Not

Blob anlık görüntüleri hiyerarşik listeleme işleminde listelenemez.

Kaynaklar

JavaScript için Azure Blob Depolama istemci kitaplığını kullanarak blobları listeleme hakkında daha fazla bilgi edinmek için aşağıdaki kaynaklara bakın.

REST API işlemleri

JavaScript için Azure SDK' sı, Azure REST API'sinin üzerinde derleyerek tanıdık JavaScript paradigmalarıyla REST API işlemleriyle etkileşim kurmanızı sağlayan kitaplıklar içerir. Blobları listelemek için istemci kitaplığı yöntemleri aşağıdaki REST API işlemini kullanır:

Kod örnekleri

İstemci kitaplığı kaynakları

Ayrıca bkz.