VENDITE: 1-800-867-1389

Impostare e recuperare proprietà e metadati

Aggiornamento: novembre 2014

Contenitori e Blob supportano due formati di dati associati, oltre ai dati che contengono:

  • Proprietà di sistema. Le proprietà di sistema sono presenti in ogni risorsa di contenitore o Blob. Alcune possono essere lette o impostate, mentre altre sono di sola lettura. Alcune proprietà di sistema corrispondono a intestazioni HTTP standard, gestite automaticamente dalla libreria gestita di Windows Azure.

  • Metadati definiti dall'utente. Si tratta di metadati specificati in una determinata risorsa, sotto forma di coppia nome-valore. È possibile utilizzare i metadati per archiviare valori aggiuntivi con un contenitore o un Blob; tali valori sono archiviati solo per scopi dell'utente e non influiscono in alcun modo sul comportamento di contenitore o Blob.

ImportantImportante
Il recupero dei valori di proprietà e metadati per una risorsa è un processo in due passaggi. Prima di leggere questi valori, è necessario recuperarli in modo esplicito nel l'oggetto CloudBlobContainer, CloudBlockBlob o CloudPageBlob. Per recuperare proprietà e metadati in modo sincrono, chiamare FetchAttributes nel contenitore o Blob; per recuperarli in modo asincrono, chiamare BeginFetchAttributes e EndFetchAttributes.

Impostazione e recupero di proprietà

Un contenitore dispone solo di proprietà di sola lettura, mentre un Blob include sia proprietà di sola lettura che di lettura e scrittura. Per impostare le proprietà in un Blob, specificare il valore della proprietà, quindi chiamare il metodo SetProperties o SetProperties.

Per leggere le proprietà in un contenitore o Blob, chiamare il metodo FetchAttributes, quindi recuperare il valore della proprietà.

Con il codice di esempio seguente viene creato un contenitore e un Blob e vengono scritti i valori delle proprietà in una finestra della console. Poiché in questo esempio si utilizza l'emulatore di archiviazione, per il corretto funzionamento del codice è necessario che il servizio di archiviazione emulato sia in esecuzione:


// Use the storage emulator account.
CloudStorageAccount storageAccount = CloudStorageAccount.DevelopmentStorageAccount;

// As an alternative, you can create the credentials from the account name and key.
// string accountName = "myaccount";
// string accountKey = "SzlFqgzqhfkj594cFoveYqCuvo8v9EESAnOLcTBeBIo31p16rJJRZx/5vU/oY3ZsK/VdFNaVpm6G8YSD2K48Nw==";
// StorageCredentials credentials = new StorageCredentials(accountName, accountKey);
// CloudStorageAccount storageAccount = new CloudStorageAccount(credentials, true);

CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient();

// Retrieve a reference to a container. 
CloudBlobContainer container = blobClient.GetContainerReference("mycontainer");

// Create the container if it does not already exist.
container.CreateIfNotExists();

// Fetch container properties and write out their values.
container.FetchAttributes();
Console.WriteLine("Properties for container " + container.Uri + ":");
Console.WriteLine("LastModifiedUTC: " + container.Properties.LastModified);
Console.WriteLine("ETag: " + container.Properties.ETag);
Console.WriteLine();

// Create a blob.
CloudBlockBlob blob = container.GetBlockBlobReference("myblob.txt");

// Create or overwrite the "myblob.txt" blob with contents from a local file.
using (var fileStream = System.IO.File.OpenRead(@"c:\test\myblob.txt"))
{
   blob.UploadFromStream(fileStream);
} 

// Fetch container properties and write out their values.
container.FetchAttributes();
Console.WriteLine("Properties for container " + container.Uri + ":");
Console.WriteLine("LastModifiedUTC: " + container.Properties.LastModified);
Console.WriteLine("ETag: " + container.Properties.ETag);
Console.WriteLine();

// Create a blob.
Uri blobUri =new UriBuilder(containerUri.AbsoluteUri + "/ablob.txt").Uri;
CloudPageBlob blob = new CloudPageBlob(blobUri, credentials);
blob.Create(1024);
            

// Set the CacheControl property.
blob.Properties.CacheControl = "public, max-age=31536000";
blob.SetProperties();

// Fetch blob attributes.
blob.FetchAttributes();

Console.WriteLine("Read-only properties for blob " + blob.Uri + ":");
Console.WriteLine("BlobType: " + blob.Properties.BlobType);
Console.WriteLine("ETag: " + blob.Properties.ETag);
Console.WriteLine("LastModifiedUtc: " + blob.Properties.LastModified);
Console.WriteLine("Length: " + blob.Properties.Length);
Console.WriteLine();

Console.WriteLine("Read-write properties for blob " + blob.Uri + ":");
Console.WriteLine("CacheControl: " +
   (blob.Properties.CacheControl == null ? "Not set" : blob.Properties.CacheControl));
Console.WriteLine("ContentEncoding: " +
   (blob.Properties.ContentEncoding == null ? "Not set" : blob.Properties.ContentEncoding));
Console.WriteLine("ContentLanguage: " +
   (blob.Properties.ContentLanguage == null ? "Not set" : blob.Properties.ContentLanguage));
Console.WriteLine("ContentMD5: " +
   (blob.Properties.ContentMD5 == null ? "Not set" : blob.Properties.ContentMD5));
Console.WriteLine("ContentType: " +
   (blob.Properties.ContentType == null ? "Not set" : blob.Properties.ContentType));

// Clean up.
blob.DeleteIfExists();
container.Delete();

Impostazione e recupero di metadati

È possibile specificare metadati come una o più coppie nome-valore in una risorsa di contenitore o Blob. Per impostare i metadati, aggiungere coppie nome-valore alla raccolta Metadata nella risorsa, quindi chiamare il metodo SetMetadata per salvare i valori nel servizio.

noteNota
Il nome dei metadati deve essere conforme alle convenzioni di denominazione per gli identificatori C#.

Per recuperare i metadati, chiamare il metodo FetchAttributes nel Blob o nel contenitore per popolare la raccolta Metadata, quindi leggere i valori.

Nel codice di esempio seguente viene creato un nuovo contenitore e ne vengono impostati i metadati, quindi vengono letti i valori dei metadati:



// Account name and key.  Modify for your account.
string accountName = "myaccount";
string accountKey = "SzlFqgzqhfkj594cFoveYqCuvo8v9EESAnOLcTBeBIo31p16rJJRZx/5vU/oY3ZsK/VdFNaVpm6G8YSD2K48Nw==";

// Get a reference to the storage account and client with authentication credentials.
StorageCredentials credentials = new StorageCredentials(accountName, accountKey);
CloudStorageAccount storageAccount = new CloudStorageAccount(credentials, true);
CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient();

// Retrieve a reference to a container. 
CloudBlobContainer container = blobClient.GetContainerReference("mycontainer");

// Create the container if it does not already exist.
container.CreateIfNotExists();

// Set metadata for the container.
container.Metadata["category"] = "images";
container.Metadata["owner"] = "azure";
container.SetMetadata();

// Get container metadata.
container.FetchAttributes();
foreach (string key in container.Metadata.Keys)
{
   Console.WriteLine("Metadata key: " + key);
   Console.WriteLine("Metadata value: " + container.Metadata[key]);
}

//Clean up.
container.Delete();

Vedere anche

Il documento è risultato utile?
(1500 caratteri rimanenti)
Grazie per i commenti inviati.
Mostra:
© 2014 Microsoft