Gestire le proprietà e i metadati dei BLOB con JavaScript
Oltre ai dati che contengono, i BLOB supportano le proprietà di sistema e i metadati definiti dall'utente. Questo articolo illustra come gestire le proprietà di sistema e i metadati definiti dall'utente con la libreria client di Archiviazione di Azure per JavaScript.
Prerequisiti
- Gli esempi in questo articolo presuppongono che sia già stato configurato un progetto per l'uso con la libreria client di Archiviazione BLOB di Azure per JavaScript. Per informazioni sulla configurazione del progetto, incluse l'installazione del pacchetto, l'importazione di moduli e la creazione di un oggetto client autorizzato per l'uso con le risorse dati, consultare Introduzione ad Archiviazione BLOB di Azure e JavaScript.
- Il meccanismo di autorizzazione deve disporre delle autorizzazioni necessarie per lavorare con le proprietà o i metadati del BLOB. Per altre informazioni, vedere le linee guida per l'autorizzazione per le operazioni API REST seguenti:
Informazioni su proprietà e metadati
Proprietà di sistema: le proprietà di sistema esistono in ogni risorsa di archiviazione BLOB. Alcune di esse possono essere lette o impostate, mentre altre sono di sola lettura. Anche se in modo non esplicito, alcune proprietà di sistema corrispondono a specifiche intestazioni HTTP standard. La libreria client di Archiviazione di Azure per JavaScript gestisce automaticamente queste proprietà.
Metadati definiti dall'utente: i metadati definiti dall'utente sono costituiti da una o più coppie nome-valore specificate per una risorsa di archiviazione BLOB. È possibile usare i metadati per archiviare valori aggiuntivi con la risorsa. I valori di metadati sono solo per le proprie esigenze e non influiscono sul comportamento della risorsa.
Le coppie nome/valore di metadati sono intestazioni HTTP valide e devono essere conformi alle restrizioni imposte sulle intestazioni HTTP. Per ulteriori informazioni sui requisiti di denominazione dei metadati, consultare Nomi dei metadati.
Nota
I tag di indice BLOB offrono anche la possibilità di archiviare attributi chiave/valore arbitrari definiti dall'utente insieme a una risorsa di archiviazione BLOB di Azure. Analogamente ai metadati, solo i tag di indice BLOB vengono indicizzati automaticamente e resi ricercabili dal servizio BLOB nativo. I metadati non possono essere indicizzati e sottoposti a query a meno che non si usi un servizio separato, ad esempio Ricerca di Azure.
Per altre informazioni su questa funzionalità, vedere Gestire e trovare dati nell'archivio BLOB di Azure con indice BLOB (anteprima).
Impostare intestazioni HTTP BLOB
Nell'esempio di codice seguente vengono impostate le proprietà del sistema HTTP BLOB in un BLOB.
Per impostare le proprietà HTTP per un BLOB, creare un BLOBClient e quindi chiamare BlobClient.setHTTPHeaders. Esaminare le proprietà BlobHTTPHeaders per conoscere le proprietà HTTP da impostare. Tutte le proprietà HTTP non impostate in modo esplicito vengono cancellate.
/*
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`);
}
Set di metadati
È possibile specificare i metadati come uno o più coppie nome-valore in una risorsa BLOB o contenitore. Per impostare i metadati, creare un BlobClient e quindi inviare un oggetto JSON di coppie nome-valore con
- BlobClient.setMetadata restituisce un oggetto BlobGetPropertiesResponse.
L'esempio di codice seguente imposta i metadati in un BLOB.
/*
metadata= {
reviewedBy: 'Bob',
releasedBy: 'Jill',
}
*/
async function setBlobMetadata(blobClient, metadata) {
await blobClient.setMetadata(metadata);
console.log(`metadata set successfully`);
}
Per leggere i metadati, ottenere le proprietà del BLOB (illustrato di seguito), in particolare facendo riferimento alla metadata
proprietà .
Ottenere le proprietà del BLOB
L'esempio di codice seguente ottiene le proprietà di sistema di un BLOB, incluse le intestazioni HTTP e i metadati, e visualizza tali valori.
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;
}
}
}
L'output per queste righe console.log è simile al seguente:
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:
Risorse
Per altre informazioni su come gestire le proprietà di sistema e i metadati definiti dall'utente usando la libreria client Archiviazione BLOB di Azure per JavaScript, vedere le risorse seguenti.
Operazioni dell'API REST
Azure SDK per JavaScript contiene librerie basate sull'API REST di Azure che consentono di interagire con le operazioni dell'API REST tramite paradigmi noti di JavaScript. I metodi della libreria client per la gestione delle proprietà di sistema e dei metadati definiti dall'utente usano le operazioni API REST seguenti:
- Impostare le proprietà del BLOB (API REST)
- Ottenere le proprietà del BLOB (API REST)
- Impostare i metadati blob (API REST)
- Ottenere metadati BLOB (API REST)