es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Listar blobs en un contenedor de almacenamiento de Azure, incluyendo metadatos.

Estoy creando una lista de Blobs en un contenedor y iterando a través de ellas. Sin embargo, el diccionario Metadata de cada Blob se queda vacío. Entiendo que necesito poblar/recuperarlos.

Hay un método BlobContainerClient.GetProperties que obtiene los metadatos, pero no los propios bloques.

¿Cómo puedo obtener una lista de Blobs con sus metadatos poblados para que pueda iterar a través de los Blobs, obtener su nombre, propiedades y también el Metadata a través de una Key?


{
    string BlobPrefix = "prefix";
    BlobContainerClient containerClient = new BlobContainerClient("connectionstring", "docrepo");
    var blobList = containerClient.GetBlobs(prefix: BlobPrefix);

    foreach (var blob in blobList)
    {
        Console.Writeline(blob.Name);
        Console.Writeline(blob.Properties.CreatedOn.Value.UtcDateTime);
        Console.Writeline(blob.Metadata.Item("KeyName"));
    }
}

Usando .NET v12 SDK.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para obtener los metadatos de cada Blob en el contenedor, es necesario utilizar el método GetBlobClient, el cual retorna un objeto BlobClient que se puede utilizar para obtener los metadatos y propiedades de un Blob específico.

    A continuación se presenta un fragmento de código actualizado que muestra cómo iterar a través de los Blobs en un contenedor y obtener sus metadatos:

    string BlobPrefix = "prefix";
    BlobContainerClient containerClient = new BlobContainerClient("connectionstring", "docrepo");
    var blobList = containerClient.GetBlobs(prefix: BlobPrefix);
    
    foreach (var blobItem in blobList)
    {
        var blobClient = containerClient.GetBlobClient(blobItem.Name);
        var blobProperties = blobClient.GetProperties();
        var blobMetadata = blobProperties.Metadata;
    
        Console.WriteLine("Nombre: {0}", blobItem.Name);
        Console.WriteLine("Creado en: {0}", blobProperties.CreatedOn.Value.UtcDateTime.ToString());
    
        // iteración a través de las llaves y valores de los metadatos
        foreach(var kvp in blobMetadata)
        {
            Console.WriteLine("Llave de metadato: {0}, Valor: {1}", kvp.Key, kvp.Value);
        }
    }
    

    En este código actualizado, utilizamos el método GetBlobClient para obtener un objeto BlobClient para cada Blob en el contenedor. Luego, podemos utilizar este objeto para obtener las propiedades del Blob, lo cual incluye un diccionario de metadatos. Podemos acceder al diccionario de metadatos utilizando la propiedad Metadata del objeto BlobProperties.

    El código luego itera a través del diccionario de metadatos e imprime los pares de llave-valor para cada elemento de metadato de cada Blob.

Comments are closed.