Udostępnij za pośrednictwem


Wyświetlanie listy obiektów blob za pomocą języka JavaScript

W tym artykule pokazano, jak wyświetlić listę obiektów blob przy użyciu biblioteki klienta usługi Azure Storage dla języka JavaScript.

Wymagania wstępne

  • W przykładach w tym artykule założono, że masz już skonfigurowany projekt do pracy z biblioteką klienta usługi Azure Blob Storage dla języka JavaScript. Aby dowiedzieć się więcej o konfigurowaniu projektu, w tym instalacji pakietu, importowaniu modułów i tworzeniu autoryzowanego obiektu klienta do pracy z zasobami danych, zobacz Rozpoczynanie pracy z usługami Azure Blob Storage i JavaScript.
  • Mechanizm autoryzacji musi mieć uprawnienia do wyświetlania listy obiektów blob. Aby dowiedzieć się więcej, zobacz wskazówki dotyczące autoryzacji dla następującej operacji interfejsu API REST:

Informacje dotyczące opcji wyświetlania listy obiektów blob

Podczas wyświetlania listy obiektów blob z kodu, możesz określić kilka opcji kontrolowania sposobu zwracania wyników z usługi Azure Storage. Możesz określić liczbę wyników, które mają być zwracane w każdym zestawie wyników, a następnie pobrać kolejne zestawy. Można określić prefiks do zwracania obiektów blob, których nazwy zaczynają się od tego znaku lub ciągu. Obiekty blob można również wyświetlać w płaskiej strukturze listy lub hierarchicznie. Hierarchiczna lista zwraca obiekty blob tak, jakby zostały zorganizowane w foldery.

Aby wyświetlić listę obiektów blob w kontenerze przy użyciu listy płaskiej, wywołaj następującą metodę:

Aby wyświetlić listę blobów w kontenerze przy użyciu listy hierarchicznej, wywołaj następującą metodę.

Zarządzanie liczbą zwracanych wyników

Domyślnie operacja wyświetlania listy zwraca maksymalnie 5000 wyników jednocześnie, ale można określić liczbę wyników, które mają zostać zwrócone przez każdą operację listy. W przykładach przedstawionych w tym artykule pokazano, jak wyświetlać wyniki strona po stronie. Aby dowiedzieć się więcej na temat pojęć dotyczących stronicowania, zobacz Pagination with the Azure SDK for JavaScript (Stronicowanie przy użyciu zestawu Azure SDK dla języka JavaScript).

Filtrowanie wyników za pomocą prefiksu

Aby filtrować listę obiektów blob, określ ciąg dla właściwości prefix w ContainerListBlobsOptions. Ciąg prefiksu może zawierać co najmniej jeden znak. Następnie usługa Azure Storage zwraca tylko obiekty blob, których nazwy zaczynają się od tego prefiksu. Na przykład, przekazanie prefiksu w postaci ciągu sample- zwraca tylko te obiekty blob, których nazwy zaczynają się od sample-.

Dołącz metadane obiektu blob lub inne informacje

Aby uwzględnić metadane obiektu blob z wynikami, ustaw includeMetadata właściwość na true jako część ContainerListBlobsOptions. Możesz również uwzględnić migawki, tagi lub wersje w wynikach, ustawiając odpowiednią właściwość na true wartość.

Lista płaska a lista hierarchiczna

Obiekty blob w usłudze Azure Storage są zorganizowane w modelu płaskim, a nie w modelu hierarchicznym (np. klasycznym systemie plików). Można jednak organizować obiekty blob w katalogach wirtualnych , aby naśladować strukturę folderów. Katalog wirtualny stanowi część nazwy obiektu blob i jest wskazywany przez znak rozdzielający.

Aby zorganizować obiekty blob w katalogach wirtualnych, użyj znaku ogranicznika w nazwie obiektu blob. Domyślny znak ogranicznika to ukośnik (/), ale można określić dowolny znak jako ogranicznik.

Jeśli nazwiesz swoje obiekty blob, stosując ogranicznik, możesz wybrać listowanie obiektów blob w sposób hierarchiczny. W przypadku operacji wyświetlania hierarchicznego usługa Azure Storage zwraca dowolne wirtualne katalogi i obiekty blob znajdujące się pod obiektem nadrzędnym. Operację wyświetlania listy można wywołać rekursywnie, aby przejść przez hierarchię, podobnie jak w przypadku programowego przechodzenia przez klasyczny system plików.

Używanie listy płaskiej

Domyślnie operacja wyświetlania listy zwraca obiekty blob w płaskiej liście. Na liście płaskiej obiekty blob nie są zorganizowane przez katalog wirtualny.

W poniższym przykładzie wymieniono obiekty blob w określonym kontenerze przy użyciu płaskiej listy. Ten przykład zawiera migawki obiektów blob i metadane obiektów blob, jeśli istnieją.

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

Przykładowe dane wyjściowe są podobne do następujących:

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

Uwaga

Przedstawione przykładowe dane wyjściowe zakładają, że masz konto magazynowe z płaską przestrzenią nazw. Jeśli włączono funkcję hierarchicznej przestrzeni nazw dla konta przechowywania, katalogi nie są wirtualne. Zamiast tego są to konkretne, niezależne obiekty. W związku z tym katalogi są wyświetlane na liście jako obiekty blob o zerowej długości.

Aby uzyskać alternatywną opcję wyświetlania listy podczas pracy z hierarchiczną przestrzenią nazw, zobacz List directory contents (Azure Data Lake Storage).

Używanie listy hierarchicznej

Gdy wywołujesz operację listowania hierarchicznie, Azure Storage zwraca katalogi wirtualne i obiekty blob na pierwszym poziomie hierarchii.

Aby wyświetlić hierarchicznie listę obiektów blob, użyj następującej metody:

W poniższym przykładzie wymieniono obiekty blob w określonym kontenerze przy użyciu listy hierarchicznej. W tym przykładzie parametr prefiksu jest początkowo ustawiony na pusty ciąg, aby wyświetlić listę wszystkich obiektów blob w kontenerze. W tym przykładzie operacja wyświetlania listy jest cyklicznie wywoływana, aby przejść przez hierarchię katalogów wirtualnych i wyświetlić listę obiektów 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}`);
    }
  }
}

Przykładowe dane wyjściowe są podobne do następujących:

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

Uwaga

Nie można wyświetlić migawek obiektów blob w operacji hierarchicznego wyświetlania.

Zasoby

Aby dowiedzieć się więcej na temat wyświetlania listy obiektów blob przy użyciu biblioteki klienta usługi Azure Blob Storage dla języka JavaScript, zobacz następujące zasoby.

Przykłady kodu

Operacje interfejsu API REST

Zestaw Azure SDK dla języka JavaScript zawiera biblioteki, które bazują na interfejsie API REST platformy Azure, co umożliwia interakcję z operacjami interfejsu API REST za pomocą znanych paradygmatów języka JavaScript. Metody biblioteki klienta do wyświetlania listy obiektów blob używają następującej operacji interfejsu API REST:

Zasoby biblioteki klienta

Zobacz też