VENTAS: 1-800-867-1389

Establecer y recuperar propiedades y metadatos

Actualizado: noviembre de 2014

Los contenedores y los blobs admiten dos formas de datos asociados, además de los datos que contienen:

  • Propiedades del sistema. Las propiedades del sistema existen en cada contenedor o recurso de blobs. Algunas de ellas se pueden leer o establecer, mientras que otras son de solo lectura. De forma encubierta, algunas propiedades del sistema que se corresponden a ciertos encabezados HTTP estándar las mantiene la biblioteca administrada de Windows Azure,

  • Metadatos definidos por el usuario. Los metadatos definidos por el usuario son metadatos que se especifican en un recurso determinado, en forma de par de valor con nombre. Puede utilizar metadatos para almacenar valores adicionales con un contenedor o un blob; estos valores son para sus propios fines únicamente y no afectan la forma en que se comporta el contenedor o blob.

ImportantImportante
La recuperación de valores de propiedades y metadatos para un recurso es un proceso de dos pasos. Antes de poder leer estos valores, debe capturarlos explícitamente en los objetos CloudBlobContainer, CloudBlockBlob o CloudPageBlob. Para capturar propiedades y metadatos de forma sincrónica, llame a FetchAttributes en el contenedor blob; para capturarlos de forma asincrónica, llame a BeginFetchAttributes y EndFetchAttributes.

Establecer y recuperar propiedades

Un contenedor solamente tiene propiedades de solo lectura, mientras que un blob tiene propiedades tanto de solo lectura como de escritura. Para establecer propiedades en un blob, especifique el valor de la propiedad y llame al método SetProperties o al método SetProperties.

Para leer propiedades en un contenedor o en un blob, llame al método FetchAttributes y, después, recupere el valor de la propiedad.

El ejemplo de código siguiente crea un contenedor y un blob y escribe los valores de la propiedad en una ventana de la consola. Este ejemplo se sirve del emulador de almacenamiento, de forma que el servicio de almacenamiento emulado deberá ejecutarse para que el código funcione:


// 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();

Establecer y recuperar metadatos

Puede especificar metadatos como uno o más pares de valor con nombre en un recurso de blobs o en un contenedor. Para establecer metadatos, agregue pares de valor con nombre a la colección Metadata en el recurso y, después, llame al método SetMetadata para guardar los valores en el servicio.

noteNota
El nombre de los metadatos debe cumplir las convenciones de nomenclatura para los identificadores de C#.

Para recuperar metadatos, llame al método FetchAttributes en el blob o contenedor para rellenar la colección Metadata, después, lea los valores.

En el ejemplo de código siguiente, se crea un nuevo contenedor y se establecen los metadatos para él, a continuación, vuelve a leer los valores de los metadatos:



// 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();

Vea también

¿Te ha resultado útil?
(Caracteres restantes: 1500)
Gracias por sus comentarios
Mostrar:
© 2014 Microsoft