Blobs weergeven met JavaScript
In dit artikel wordt beschreven hoe u blobs weergeeft met behulp van de Azure Storage-clientbibliotheek voor JavaScript.
Vereisten
- In de voorbeelden in dit artikel wordt ervan uitgegaan dat u al een project hebt ingesteld voor gebruik met de Azure Blob Storage-clientbibliotheek voor JavaScript. Zie Aan de slag met Azure Blob Storage en JavaScript voor meer informatie over het instellen van uw project, inclusief pakketinstallatie, het importeren van modules en het maken van een geautoriseerd clientobject voor gebruik met gegevensbronnen.
- Het autorisatiemechanisme moet machtigingen hebben om blobs weer te geven. Zie de autorisatierichtlijnen voor de volgende REST API-bewerking voor meer informatie:
Over opties voor blobvermelding
Wanneer u blobs uit uw code opgeeft, kunt u verschillende opties opgeven om te beheren hoe resultaten worden geretourneerd vanuit Azure Storage. U kunt het aantal resultaten opgeven dat moet worden geretourneerd in elke set resultaten en vervolgens de volgende sets ophalen. U kunt een voorvoegsel opgeven om blobs te retourneren waarvan de namen beginnen met dat teken of die tekenreeks. En u kunt blobs in een platte lijststructuur of hiërarchisch weergeven. Een hiërarchische vermelding retourneert blobs alsof ze zijn ingedeeld in mappen.
Als u de blobs in een container wilt weergeven met behulp van een platte vermelding, roept u de volgende methode aan:
Als u de blobs in een container wilt weergeven met behulp van een hiërarchische vermelding, roept u de volgende methode aan:
- ContainerClient.listBlobsByHierarchy
Beheren hoeveel resultaten worden geretourneerd
Standaard retourneert een vermeldingsbewerking maximaal 5000 resultaten tegelijk, maar u kunt het aantal resultaten opgeven dat elke vermeldingsbewerking moet retourneren. De voorbeelden in dit artikel laten zien hoe u resultaten op pagina's kunt retourneren. Zie Paginering met de Azure SDK voor JavaScript voor meer informatie over pagineringsconcepten.
Resultaten filteren met een voorvoegsel
Als u de lijst met blobs wilt filteren, geeft u een tekenreeks op voor de prefix
eigenschap in ContainerListBlobsOptions. De tekenreeks voor het voorvoegsel kan een of meer tekens bevatten. Azure Storage retourneert vervolgens alleen de blobs waarvan de namen beginnen met dat voorvoegsel. Als u bijvoorbeeld de tekenreeks sample-
voor het voorvoegsel doorgeeft, worden alleen blobs geretourneerd waarvan de namen beginnen met sample-
.
Blobmetagegevens of andere informatie opnemen
Als u blobmetagegevens wilt opnemen met de resultaten, stelt u de includeMetadata
eigenschap true
in op als onderdeel van ContainerListBlobsOptions. U kunt ook momentopnamen, tags of versies in de resultaten opnemen door de juiste eigenschap in te stellen op true
.
Platte vermelding versus hiërarchische vermelding
Blobs in Azure Storage zijn ingedeeld in een plat paradigma in plaats van een hiërarchisch paradigma (zoals een klassiek bestandssysteem). U kunt blobs echter in virtuele mappen ordenen om een mapstructuur na te bootsen. Een virtuele map maakt deel uit van de naam van de blob en wordt aangegeven door het scheidingsteken.
Als u blobs wilt ordenen in virtuele mappen, gebruikt u een scheidingsteken in de blobnaam. Het standaardteken voor scheidingstekens is een slash (/), maar u kunt elk teken opgeven als scheidingsteken.
Als u de naam van uw blobs opgeeft met behulp van een scheidingsteken, kunt u ervoor kiezen om blobs hiërarchisch weer te geven. Voor een hiërarchische vermeldingsbewerking retourneert Azure Storage alle virtuele mappen en blobs onder het bovenliggende object. U kunt de vermeldingsbewerking recursief aanroepen om de hiërarchie te doorlopen, vergelijkbaar met de manier waarop u een klassiek bestandssysteem programmatisch zou doorlopen.
Een platte vermelding gebruiken
Standaard retourneert een vermeldingsbewerking blobs in een platte vermelding. In een platte vermelding worden blobs niet geordend op virtuele map.
In het volgende voorbeeld worden de blobs in de opgegeven container vermeld met behulp van een platte vermelding. Dit voorbeeld bevat blob-momentopnamen en blobmetagegevens, als deze bestaan:
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}`);
}
}
}
}
De voorbeelduitvoer is vergelijkbaar met:
Blobs flat list (by page):
- Page:
- a1
- a2
- Page:
- folder1/b1
- folder1/b2
- Page:
- folder2/sub1/c
- folder2/sub1/d
Notitie
In de voorbeelduitvoer wordt ervan uitgegaan dat u een opslagaccount met een platte naamruimte hebt. Als u de hiërarchische naamruimtefunctie voor uw opslagaccount hebt ingeschakeld, zijn mappen niet virtueel. In plaats daarvan zijn ze concrete, onafhankelijke objecten. Als gevolg hiervan worden mappen in de lijst weergegeven als blobs met lengte nul.
Zie De inhoud van de lijstmap (Azure Data Lake Storage) voor een alternatieve vermeldingsoptie wanneer u met een hiërarchische naamruimte werkt.
Een hiërarchische vermelding gebruiken
Wanneer u een vermeldingsbewerking hiërarchisch aanroept, retourneert Azure Storage de virtuele mappen en blobs op het eerste niveau van de hiërarchie.
Gebruik de volgende methode om blobs hiërarchisch weer te geven:
In het volgende voorbeeld worden de blobs in de opgegeven container weergegeven met behulp van een hiërarchische lijst. In dit voorbeeld wordt de parameter voor het voorvoegsel in eerste instantie ingesteld op een lege tekenreeks om alle blobs in de container weer te geven. In het voorbeeld wordt de vermeldingsbewerking recursief aanroepen om de virtuele maphiërarchie en lijst-blobs te doorlopen.
// 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}`);
}
}
}
De voorbeelduitvoer is vergelijkbaar met:
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
Notitie
Blob-momentopnamen kunnen niet worden weergegeven in een hiërarchische lijstbewerking.
Resources
Zie de volgende resources voor meer informatie over het weergeven van blobs met behulp van de Azure Blob Storage-clientbibliotheek voor JavaScript.
Codevoorbeelden
- Voorbeelden van JavaScript- en TypeScript-code weergeven uit dit artikel (GitHub)
REST API-bewerkingen
De Azure SDK voor JavaScript bevat bibliotheken die zijn gebaseerd op de Azure REST API, zodat u kunt communiceren met REST API-bewerkingen via bekende JavaScript-paradigma's. De clientbibliotheekmethoden voor het weergeven van blobs gebruiken de volgende REST API-bewerking: