Поделиться через


Вывод списка больших двоичных объектов с помощью JavaScript

В этой статье показано, как перечислить большие двоичные объекты с помощью клиентской библиотеки служба хранилища Azure для JavaScript.

Необходимые компоненты

  • В примерах этой статьи предполагается, что у вас уже есть проект, настроенный для работы с клиентской библиотекой Хранилище BLOB-объектов Azure для JavaScript. Сведения о настройке проекта, включая установку пакетов, импорт модулей и создание авторизованного клиентского объекта для работы с ресурсами данных, см. в статье "Начало работы с Хранилище BLOB-объектов Azure и JavaScript".
  • Механизм авторизации должен иметь разрешения для перечисления больших двоичных объектов. Дополнительные сведения см. в руководстве по авторизации для следующей операции REST API:

Сведения о параметрах перечисления BLOB-объектов

При перечислении больших двоичных объектов из кода можно указать несколько вариантов управления возвратом результатов из служба хранилища Azure. Можно указать число возвращаемых результатов в каждом наборе результатов, а затем извлечь последующие наборы. Можно указать префикс для возврата больших двоичных объектов, имена которых начинаются с указанного символа или строки. Кроме того, можно создать неструктурированный или структурированный список больших двоичных объектов. В структурированном списке большие двоичные объекты представлены так, будто они организованы по папкам.

Чтобы перечислить большие двоичные объекты в контейнере с помощью неструктурированного списка, вызовите следующий метод:

Чтобы перечислить большие двоичные объекты в контейнере с помощью иерархического списка, вызовите следующий метод:

Управление количеством возвращаемых результатов

По умолчанию операция получения списка возвращает не более 5000 результатов за раз, но вы можете определить количество возвращаемых результатов для каждой операции получения списка. Представленные в этой статье примеры демонстрируют постраничное получение результатов. Дополнительные сведения о концепциях разбиения на страницы см. в статье "Разбиение на страницы" с помощью пакета SDK Azure для JavaScript.

Фильтрация результатов с помощью префикса

Чтобы отфильтровать список больших двоичных объектов, укажите строку для prefix свойства в ContainerListBlobsOptions. Строка префикса может содержать один или несколько символов. Служба хранилища Azure возвращает только те большие двоичные объекты, имена которых начинаются с этого префикса. Например, передача строки sample- префикса возвращает только большие двоичные объекты, имена которых начинаются с sample-.

Включение метаданных BLOB-объектов или других сведений

Чтобы включить метаданные BLOB-объектов с результатами, задайте includeMetadata для свойства true значение ContainerListBlobsOptions. Кроме того, можно включить моментальные снимки, теги или версии в результаты, задав соответствующее свойство true.

Неструктурированный список и структурированный список

Большие двоичные объекты находятся в службе хранилища Azure в неструктурированном виде, без использования какой-либо иерархии (например, как в классической файловой системе). Однако большие двоичные объекты можно упорядочить по виртуальным каталогам, чтобы имитировать структуру папок. Виртуальный каталог образует часть имени большого двоичного объекта и обозначается символом-разделителем.

Чтобы упорядочить большие двоичные объекты по виртуальным каталогам, используйте символ-разделитель в имени большого двоичного объекта. Символом-разделителем по умолчанию является косая черта (/), однако в качестве разделителя можно указать любой символ.

Если присвоить большим двоичным объектам имена с использованием разделителя, можно выбрать получение структурированного списка больших двоичных объектов. Для этого служба хранилища Azure возвращает все виртуальные каталоги и большие двоичные объекты под родительским объектом. Операцию перечисления можно вызвать рекурсивно для прохода по иерархии, подобно тому, как осуществляется программный обход классической файловой системы.

Использование неструктурированного списка

По умолчанию операция перечисления возвращает большие двоичные объекты в виде неструктурированного списка. В неструктурированном списке большие двоичные объекты не организованы по виртуальному каталогу.

В следующем примере показан список BLOB-объектов в указанном контейнере. В этом примере содержатся моментальные снимки BLOB-объектов и метаданные BLOB-объектов, если они существуют:

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

Выходные данные аналогичны следующим:

Blobs flat list (by page):
- Page:
  - a1
  - a2
- Page:
  - folder1/b1
  - folder1/b2
- Page:
  - folder2/sub1/c
  - folder2/sub1/d

Примечание.

В примере выходных данных предполагается, что у вас есть учетная запись хранения с неструктурированным пространством имен. Если вы включили функцию иерархического пространства имен для учетной записи хранения, каталоги не являются виртуальными. Это будут реальные независимые объекты. В результате каталоги отображаются в списке как большие двоичные объекты нулевой длины.

Альтернативный вариант перечисления при работе с иерархическим пространством имен см. в разделе "Список содержимого каталога" (Azure Data Lake Storage).

Использование иерархического списка

При вызове операции иерархического перечисления служба хранилища Azure возвращает виртуальные каталоги и большие двоичные объекты на первом уровне иерархии.

Чтобы перечислить большие двоичные объекты иерархически, используйте следующий метод:

В следующем примере перечислены большие двоичные объекты в указанном контейнере с помощью иерархического списка. В этом примере параметр префикса изначально присваивается пустой строке для перечисления всех больших двоичных объектов в контейнере. Затем этот пример вызывает операцию перечисления рекурсивно для обхода иерархии виртуальных каталогов и больших двоичных объектов списка.

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

Выходные данные аналогичны следующим:

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

Примечание.

При выполнении операции иерархического перечисления не выводятся моментальные снимки больших двоичных объектов.

Ресурсы

Дополнительные сведения о том, как перечислять большие двоичные объекты с помощью клиентской библиотеки Хранилище BLOB-объектов Azure для JavaScript, см. в следующих ресурсах.

Примеры кода

Операции REST API

Пакет SDK Azure для JavaScript содержит библиотеки, которые создаются на основе REST API Azure, что позволяет взаимодействовать с операциями REST API через знакомые парадигмы JavaScript. Методы клиентской библиотеки для перечисления БОЛЬШИХ двоичных объектов используют следующую операцию REST API:

Ресурсы клиентской библиотеки

См. также