Exportar (0) Imprimir
Expandir Tudo

Definição e recuperação de propriedades e metadados

Atualizado: novembro de 2014

Contêineres e blobs dão suporte a duas formas de dados associados, além dos dados contidos neles:

  • Propriedades de sistema. Todo recurso de contêiner ou blob contém propriedades de sistema. Algumas delas podem ser lidas ou definidas, enquanto outras são somente leitura. De forma oculta, algumas propriedades de sistema correspondem a certos cabeçalhos de HTTP padrão que a biblioteca gerenciada do Windows Azure mantém para você.

  • Metadados definidos pelo usuário. Metadados definidos pelo usuário são metadados que você especifica em determinado recurso, como um par nome-valor. Você pode usar metadados para armazenar valores adicionais com um contêiner ou blob; esses valores se destinam apenas aos objetivos do usuário e não afetam o comportamento do contêiner ou do blob.

ImportantImportante
A recuperação de valores de propriedade e metadados para um recurso é um processo de duas etapas. Antes de ler esses valores, você deve buscá-los explicitamente nos objetos CloudBlobContainer, CloudBlockBlob ou CloudPageBlob. Para buscar propriedades e metadados de forma síncrona, chame FetchAttributes no contêiner ou no blob; para buscá-los de forma assíncrona, chame BeginFetchAttributes e EndFetchAttributes.

Definindo e recuperando propriedades

Um contêiner só tem propriedades somente leitura, enquanto um blob tem propriedades somente leitura e de leitura-gravação. Para definir propriedades em um blob, especifique o valor de propriedade e chame o método SetProperties ou SetProperties.

Para ler propriedades em um contêiner ou blob, chame o método FetchAttributes e recupere o valor de propriedade.

O exemplo de código a seguir cria um contêiner e um blob e também escreve valores de propriedade em uma janela de console. Este exemplo usa o emulador de armazenamento; portanto, o serviço de armazenamento emulado deve estar em execução para que o 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();

Definindo e recuperando metadados

Você pode especificar metadados como um ou mais pares nome-valor em um recurso de blob ou contêiner. Para definir metadados, adicione pares nome-valor à coleção Metadata no recurso e chame o método SetMetadata para salvar os valores no serviço.

noteObservação
O nome dos metadados deve obedecer às convenções de nomenclatura para identificadores C#.

Para recuperar metadados, chame o método FetchAttributes no blob ou no contêiner para popular a coleção Metadata e ler os valores.

O exemplo de código a seguir cria um novo contêiner, define metadados para ele e lê os valores dos metadados de trás para frente:



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

Consulte Também

Mostrar:
© 2014 Microsoft