VENTES: 1-800-867-1389

Définir et récupérer des propriétés et des métadonnées

Mis à jour: novembre 2014

Les conteneurs et les objets BLOB prennent en charge deux formes de données associées, en plus des données qu'ils contiennent :

  • Propriétés système. Les propriétés système existent sur chaque ressource de conteneur ou d'objet BLOB. Certaines d'entre elles peuvent être lues ou définies, alors que d'autres sont en lecture seule. En arrière-plan, certaines propriétés système correspondent à des en-têtes HTTP standard gérés par la bibliothèque managée Windows Azure.

  • Métadonnées définies par l'utilisateur. Les métadonnées définie par l'utilisateur sont spécifiées sur une ressource donnée, sous forme de paire nom-valeur. Utilisez les métadonnées pour stocker des valeurs supplémentaires avec un conteneur ou un objet BLOB. Ces valeurs sont pour votre usage propre et n'affectent pas le comportement du conteneur ou de l'objet BLOB.

ImportantImportant
La récupération des valeurs de propriété et de métadonnées pour une ressource est un processus en deux étapes. Avant de pouvoir lire ces valeurs, vous devez explicitement les récupérer sur vos objets CloudBlobContainer, CloudBlockBlob ou CloudPageBlob. Pour récupérer les propriétés et les métadonnées de manière synchrone, appelez FetchAttributes sur le conteneur ou l'objet BLOB, pour les récupérer de manière asynchrone, appelez BeginFetchAttributes et EndFetchAttributes.

Définition et récupération de propriétés

Un conteneur ne contient que des propriétés en lecture seules, contrairement à un objet BLOB dont les propriétés sont à la fois en lecture seule et en lecture-écriture. Pour définir des propriétés sur un objet BLOB, spécifiez la valeur de propriété, puis appelez les méthodes SetProperties ou SetProperties.

Pour lire des propriétés sur un conteneur ou un objet BLOB, appelez la méthode FetchAttributes, puis récupérez la valeur de propriété.

L'exemple de code suivant crée un conteneur et un objet BLOB et écrit les valeurs de propriété dans une fenêtre de console. Cet exemple utilise l'émulateur de stockage, le service de stockage émulé doit donc être en service pour permettre au code de fonctionner :


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

Définition et récupération de métadonnées

Vous pouvez spécifier des métadonnées en tant qu'une ou plusieurs paires nom-valeur sur une ressource d'objet BLOB ou de conteneur. Pour définir des métadonnées, ajoutez des paires nom-valeur à la collection Metadata sur la ressource, puis appelez la méthode SetMetadata pour enregistrer les valeurs dans le service.

noteRemarque
Le nom de vos métadonnées doit respecter les conventions d'affectation de noms des identificateurs C#.

Pour récupérer des métadonnées, appelez la méthode FetchAttributes sur votre objet BLOB ou conteneur pour remplir la collection Metadata, puis lisez les valeurs.

L'exemple de code suivant crée un nouveau conteneur et définit ses métadonnées, puis il relit les valeurs de métadonnées :



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

Voir aussi

Cela vous a-t-il été utile ?
(1500 caractères restants)
Merci pour vos suggestions.
Afficher:
© 2014 Microsoft