Hantera blobegenskaper och metadata med JavaScript
Förutom de data som de innehåller stöder blobar systemegenskaper och användardefinierade metadata. Den här artikeln visar hur du hanterar systemegenskaper och användardefinierade metadata med 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. Information om hur du konfigurerar projektet, inklusive paketinstallation, import av moduler och att skapa 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 arbeta med blobegenskaper eller metadata. Mer information finns i auktoriseringsvägledningen för följande REST API-åtgärder:
Om egenskaper och metadata
Systemegenskaper: Systemegenskaper finns på varje Blob Storage-resurs. Vissa av dem kan läsas eller ställas in, medan andra är skrivskyddade. Under täcket motsvarar vissa systemegenskaper vissa standard-HTTP-huvuden. Azure Storage-klientbiblioteket för JavaScript underhåller dessa egenskaper åt dig.
Användardefinierade metadata: Användardefinierade metadata består av ett eller flera namn/värde-par som du anger för en Blob Storage-resurs. Du kan använda metadata för att lagra ytterligare värden med resursen. Metadatavärden är endast för dina egna syften och påverkar inte hur resursen beter sig.
Metadatanamn/värdepar är giltiga HTTP-huvuden och bör följa alla begränsningar som styr HTTP-huvuden. Mer information om namngivningskrav för metadata finns i Metadatanamn.
Kommentar
Blobindextaggar ger också möjlighet att lagra godtyckliga användardefinierade nyckel-/värdeattribut tillsammans med en Azure Blob Storage-resurs. Även om det liknar metadata indexeras endast blobindextaggar automatiskt och görs sökbara av den interna blobtjänsten. Metadata kan inte indexeras och frågas om du inte använder en separat tjänst, till exempel Azure Search.
Mer information om den här funktionen finns i Hantera och hitta data på Azure Blob Storage med blobindex (förhandsversion).
Ange http-huvuden för blob
I följande kodexempel anges http-systemegenskaper för blobar på en blob.
Om du vill ange HTTP-egenskaperna för en blob skapar du en BlobClient och anropar sedan BlobClient.setHTTPHeaders. Granska blobHTTPHeaders-egenskaperna för att veta vilka HTTP-egenskaper du vill ange. Alla HTTP-egenskaper som inte uttryckligen anges rensas.
/*
properties= {
blobContentType: 'text/plain',
blobContentLanguage: 'en-us',
blobContentEncoding: 'utf-8',
// all other http properties are cleared
}
*/
async function setHTTPHeaders(blobClient, headers) {
await blobClient.setHTTPHeaders(headers);
console.log(`headers set successfully`);
}
Ange metadata
Du kan ange metadata som ett eller flera namn/värde-par på en blob- eller containerresurs. Om du vill ange metadata skapar du en BlobClient och skickar sedan ett JSON-objekt med namn/värde-par med
- BlobClient.setMetadata returnerar ett BlobGetPropertiesResponse-objekt.
I följande kodexempel anges metadata på en blob.
/*
metadata= {
reviewedBy: 'Bob',
releasedBy: 'Jill',
}
*/
async function setBlobMetadata(blobClient, metadata) {
await blobClient.setMetadata(metadata);
console.log(`metadata set successfully`);
}
Om du vill läsa metadata hämtar du blobens egenskaper (visas nedan) och refererar metadata
specifikt till egenskapen.
Hämta blobegenskaper
I följande kodexempel hämtas en blobs systemegenskaper, inklusive HTTP-huvuden och metadata, och dessa värden visas.
async function getProperties(blobClient) {
const properties = await blobClient.getProperties();
console.log(blobClient.name + ' properties: ');
for (const property in properties) {
switch (property) {
// nested properties are stringified and returned as strings
case 'metadata':
case 'objectReplicationRules':
console.log(` ${property}: ${JSON.stringify(properties[property])}`);
break;
default:
console.log(` ${property}: ${properties[property]}`);
break;
}
}
}
Utdata för dessa console.log rader ser ut så här:
my-blob.txt properties:
lastModified: Thu Apr 21 2022 13:02:53 GMT-0700 (Pacific Daylight Time)
createdOn: Thu Apr 21 2022 13:02:53 GMT-0700 (Pacific Daylight Time)
metadata: {"releasedby":"Jill","reviewedby":"Bob"}
objectReplicationPolicyId: undefined
objectReplicationRules: {}
blobType: BlockBlob
copyCompletedOn: undefined
copyStatusDescription: undefined
copyId: undefined
copyProgress: undefined
copySource: undefined
copyStatus: undefined
isIncrementalCopy: undefined
destinationSnapshot: undefined
leaseDuration: undefined
leaseState: available
leaseStatus: unlocked
contentLength: 19
contentType: text/plain
etag: "0x8DA23D1EBA8E607"
contentMD5: undefined
contentEncoding: utf-8
contentDisposition: undefined
contentLanguage: en-us
cacheControl: undefined
blobSequenceNumber: undefined
clientRequestId: 58da0441-7224-4837-9b4a-547f9a0c7143
requestId: 26acb38a-001e-0046-27ba-55ef22000000
version: 2021-04-10
date: Thu Apr 21 2022 13:02:52 GMT-0700 (Pacific Daylight Time)
acceptRanges: bytes
blobCommittedBlockCount: undefined
isServerEncrypted: true
encryptionKeySha256: undefined
encryptionScope: undefined
accessTier: Hot
accessTierInferred: true
archiveStatus: undefined
accessTierChangedOn: undefined
versionId: undefined
isCurrentVersion: undefined
tagCount: undefined
expiresOn: undefined
isSealed: undefined
rehydratePriority: undefined
lastAccessed: undefined
immutabilityPolicyExpiresOn: undefined
immutabilityPolicyMode: undefined
legalHold: undefined
errorCode: undefined
body: true
_response: [object Object]
objectReplicationDestinationPolicyId: undefined
objectReplicationSourceProperties:
Resurser
Mer information om hur du hanterar systemegenskaper och användardefinierade metadata med hjälp av Azure Blob Storage-klientbiblioteket för JavaScript finns i följande resurser.
REST API-åtgärder
Azure SDK för JavaScript innehåller bibliotek som bygger på Azure REST API, så att du kan interagera med REST API-åtgärder via välbekanta JavaScript-paradigm. Klientbiblioteksmetoderna för att hantera systemegenskaper och användardefinierade metadata använder följande REST API-åtgärder:
- Ange blobegenskaper (REST API)
- Hämta blobegenskaper (REST API)
- Ange blobmetadata (REST API)
- Hämta blobmetadata (REST API)