Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Den här artikeln visar hur du listar blobar med hjälp av Azure Storage-klientbiblioteket för JavaScript.
Förutsättningar
- Exemplen i den här artikeln förutsätter att du redan har ett projekt konfigurerat för att fungera med Azure Blob Storage-klientbiblioteket för JavaScript. Mer information om hur du konfigurerar projektet, inklusive paketinstallation, import av moduler och skapande av ett auktoriserat klientobjekt för att arbeta med dataresurser finns i Kom igång med Azure Blob Storage och JavaScript.
- Auktoriseringsmekanismen måste ha behörighet att lista blobar. Mer information finns i auktoriseringsvägledningen för följande REST API-åtgärd:
Om alternativ för bloblistning
När du listar blobar från koden kan du ange flera alternativ för att hantera hur resultaten returneras från Azure Storage. Du kan ange hur många resultat som ska returneras i varje resultatuppsättning och sedan hämta efterföljande uppsättningar. Du kan ange ett prefix för att returnera blobar vars namn börjar med det tecknet eller strängen. Och du kan lista blobar i en platt liststruktur, eller hierarkiskt. En hierarkisk lista returnerar blobar som om de vore ordnade i mappar.
Om du vill lista blobarna i en container med en flat lista anropar du följande metod:
Om du vill lista blobarna i en container med hjälp av en hierarkisk lista anropar du följande metod:
- ContainerClient.listBlobsByHierarchy
Hantera hur många resultat som returneras
Som standard returnerar en liståtgärd upp till 5 000 resultat åt gången, men du kan ange antalet resultat som du vill att varje listningsåtgärd ska returnera. Exemplen som presenteras i den här artikeln visar hur du returnerar resultat på sidor. Mer information om sidnumreringsbegrepp finns i Sidnumrering med Azure SDKs för JavaScript.
Filtrera resultat med ett prefix
Om du vill filtrera listan över blobar anger du en sträng för prefix egenskapen i ContainerListBlobsOptions. Prefixsträngen kan innehålla ett eller flera tecken. Azure Storage returnerar endast de blobs vars namn börjar med det prefixet. Om du till exempel skickar prefixsträngen sample- returneras endast blobar vars namn börjar med sample-.
Inkludera blobmetadata eller annan information
Om du vill inkludera blobmetadata med resultatet anger du includeMetadata egenskapen till true som en del av ContainerListBlobsOptions. Du kan också inkludera ögonblicksbilder, taggar eller versioner i resultatet genom att ange lämplig egenskap till true.
Flat listning jämfört med hierarkisk lista
Blobar i Azure Storage är ordnade i ett platt paradigm snarare än ett hierarkiskt paradigm (som ett klassiskt filsystem). Du kan dock organisera blobs i virtuella kataloger för att efterlikna en mappstruktur. En virtuell katalog utgör en del av blobens namn och indikeras av avgränsartecknet.
Om du vill organisera blobar i virtuella kataloger använder du ett avgränsartecken i blobnamnet. Standardtecken för avgränsare är ett snedstreck (/), men du kan ange valfritt tecken som avgränsare.
Om du namnger dina blobs med en avgränsare kan du välja att lista blobs hierarkiskt. För en hierarkisk listningsåtgärd returnerar Azure Storage alla virtuella kataloger och blobbar under det överordnade objektet. Du kan anropa listningsåtgärden rekursivt för att korsa hierarkin, ungefär som du skulle gå igenom ett klassiskt filsystem programmatiskt.
Använd en platt lista
Som standard returnerar en liståtgärd blobar i en platt lista. I en platt lista ordnas inte blobar efter virtuell katalog.
Följande exempel listar blobsen i den angivna behållaren genom att använda en platt listning. Det här exemplet innehåller blob-snapshots och blob-metadata, om de finns:
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}`);
}
}
}
}
Exempelutdata liknar:
Blobs flat list (by page):
- Page:
- a1
- a2
- Page:
- folder1/b1
- folder1/b2
- Page:
- folder2/sub1/c
- folder2/sub1/d
Kommentar
Exempelutdata som visas förutsätter att du har ett lagringskonto med ett platt namnområde. Om du aktiverar funktionen för hierarkisk namnrymd för lagringskontot är katalogerna inte virtuella. Istället är de konkreta, självständiga objekt. Därför visas kataloger i listan som blobar med noll längd.
Ett alternativ för listalternativ när du arbetar med ett hierarkiskt namnområde finns i Listkataloginnehåll (Azure Data Lake Storage).
Använda en hierarkisk lista
När du anropar en liståtgärd hierarkiskt returnerar Azure Storage de virtuella katalogerna och blobarna på den första nivån i hierarkin.
Om du vill lista blobar hierarkiskt använder du följande metod:
I följande exempel visas blobarna i den angivna containern med hjälp av en hierarkisk lista. I det här exemplet är prefixparametern ursprungligen inställd på en tom sträng för att visa en lista över alla blobar i containern. Exemplet anropar sedan listningsåtgärden rekursivt för att passera den virtuella kataloghierarkin och listblobbarna.
// 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}`);
}
}
}
Exempelutdata liknar:
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
Kommentar
Blob-snapshots kan inte listas i en hierarkisk listningsoperation.
Listablobbar i Apache Arrow-format (förhandsvisning)
Viktigt!
Att lista blobbar i Apache Arrow-format är för närvarande i FÖRHANDSVISNING. Detta scenario kräver en betaversion (förhandsversion) av Azure Blob Storage-klientbiblioteket för JavaScript (till exempel förhandsversionen 12.34.0-beta.1 eller senare). @azure/storage-blob Förhandsversionsfunktioner tillhandahålls utan serviceavtal och rekommenderas inte för produktionsarbetsbelastningar. Vissa funktioner kanske inte stöds eller har begränsade funktioner. Mer information finns i Kompletterande villkor för användning av Microsoft Azure-förhandsversioner.
Denna funktion bygger på det befintliga List Blobs API:et. Istället för att använda standard-XML använder den det kompakta, kolumnarformade Apache Arrow-formatet som svarsformat på tråden. Du aktiverar det genom att ställa in ett enda alternativ i containerlisting-anropet. JavaScript SDK avkodar Apache Arrow bakom kulisserna och returnerar fortfarande samma blob-objekt. Denna metod förbättrar listningskapaciteten och minskar klientsidans CPU vid uppräkning av stora containrar. Det bevarar det responsavtal som applikationer är beroende av.
Varning
Att lista blobs i Apache Arrow-format stöds inte på lagringskonton som har hierarkiskt namnrymd (Azure Data Lake Storage) aktiverat.
För att begära Apache Arrow-formaterade resultat, sätt egenskapen responseFormat för listningsalternativen till StorageResponseFormat.Arrow, och skicka sedan alternativen till ContainerClient.listBlobsFlat. Importera StorageResponseFormat enum från @azure/storage-blob.
Följande exempel listar blobsen i en container och begär resultaten i Apache Arrow-format:
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);
}
Resurser
För att lära dig mer om hur man listar blobs genom att använda Azure Blob Storage-klientbiblioteket för JavaScript, se följande resurser.
Kodexempel
- Visa JavaScript- och TypeScript-kodexempel från denna artikel på GitHub.
REST API-åtgärder
Azure SDKs för JavaScript innehåller bibliotek som bygger ovanpå Azure REST API. Genom att använda dessa bibliotek kan du interagera med REST API-operationer via välkända JavaScript-paradigm. Klientbiblioteksmetoderna för att visa blobar använder följande REST API-åtgärd:
- Lista blobar (REST API)