Sdílet prostřednictvím


Správa vlastností a metadat objektů blob pomocí .NET

Kromě dat, která obsahují, podporují objekty blob systémové vlastnosti a uživatelsky definovaná metadata. Tento článek ukazuje, jak spravovat vlastnosti systému a uživatelsky definovaná metadata pomocí klientské knihovny azure Storage pro .NET.

Požadavky

Nastavení prostředí

Pokud nemáte existující projekt, v této části se dozvíte, jak nastavit projekt pro práci s klientskou knihovnou Azure Blob Storage pro .NET. Kroky zahrnují instalaci balíčku, přidání using direktiv a vytvoření autorizovaného objektu klienta. Podrobnosti najdete v tématu Začínáme se službou Azure Blob Storage a .NET.

Instalace balíčků

Z adresáře projektu nainstalujte balíčky pro klientské knihovny Azure Blob Storage a Azure Identity pomocí dotnet add package příkazu. Balíček Azure.Identity je potřeba pro připojení bez hesla ke službám Azure.

dotnet add package Azure.Storage.Blobs
dotnet add package Azure.Identity

Přidání using direktiv

Na začátek souboru kódu přidejte tyto using direktivy:

using Azure.Identity;
using Azure.Storage.Blobs;
using Azure.Storage.Blobs.Models;
using Azure.Storage.Blobs.Specialized;

Některé příklady kódu v tomto článku mohou vyžadovat další using direktivy.

Vytvoření objektu klienta

Pokud chcete připojit aplikaci ke službě Blob Storage, vytvořte instanci BlobServiceClient. Následující příklad ukazuje, jak vytvořit objekt klienta pro DefaultAzureCredential autorizaci:

public BlobServiceClient GetBlobServiceClient(string accountName)
{
    BlobServiceClient client = new(
        new Uri($"https://{accountName}.blob.core.windows.net"),
        new DefaultAzureCredential());

    return client;
}

Klienta služby můžete zaregistrovat pro injektáž závislostí v aplikaci .NET.

Můžete také vytvořit klientské objekty pro konkrétní kontejnery nebo objekty blob. Další informace o vytváření a správě klientských objektů najdete v tématu Vytváření a správa klientských objektů, které pracují s datovými prostředky.

Autorizace

Autorizační mechanismus musí mít potřebná oprávnění pro práci s vlastnostmi kontejneru nebo metadaty. K autorizaci pomocí Microsoft Entra ID (doporučeno) potřebujete k operacím získání integrovanou roli Storage Blob Data Reader nebo vyšší roli Azure RBAC a přispěvatel dat objektů blob služby Storage nebo vyšší pro nastavené operace. Další informace najdete v pokynech k autorizaci k nastavení vlastností objektů blob (REST API), získání vlastností objektů blob (REST API), nastavení metadat objektů blob (REST API) nebo získání metadat objektů blob (REST API).

O vlastnostech a metadatech

  • Systémové vlastnosti: Systémové vlastnosti existují pro každý prostředek úložiště objektů blob. Některé z nich můžou být přečtené nebo nastavené, zatímco jiné jsou jen pro čtení. Pod popisky některé systémové vlastnosti odpovídají určitým standardním hlavičkám HTTP. Klientská knihovna Azure Storage pro .NET tyto vlastnosti udržuje za vás.

  • Uživatelsky definovaná metadata: Uživatelsky definovaná metadata se skládají z jednoho nebo více párů název-hodnota, které zadáte pro prostředek úložiště objektů blob. Metadata můžete použít k uložení dalších hodnot s prostředkem. Hodnoty metadat jsou určené jenom pro vaše vlastní účely a nemají vliv na chování prostředku.

    Páry názvů a hodnot metadat jsou platné hlavičky HTTP a měly by dodržovat všechna omezení, která se řídí hlavičkami HTTP. Další informace opožadavch

Poznámka:

Značky indexu objektů blob také poskytují možnost ukládat libovolné uživatelem definované atributy klíče a hodnoty společně s prostředkem úložiště objektů blob v Azure. Podobně jako metadata se automaticky indexují a prohledávají nativní službou blob pouze značky indexu objektů blob. Metadata nelze indexovat a dotazovat, pokud nevyužíváte samostatnou službu, jako je Azure Search.

Další informace o této funkci najdete v tématu Správa a vyhledání dat ve službě Azure Blob Storage pomocí indexu objektů blob.

Nastavení a načtení vlastností

Následující příklad kódu nastaví ContentType vlastnosti a ContentLanguage vlastnosti systému v objektu blob.

Pokud chcete nastavit vlastnosti objektu blob, zavolejte SetHttpHeaders nebo SetHttpHeadersAsync. Všechny vlastnosti, které nejsou explicitně nastaveny, jsou vymazány. Následující příklad kódu nejprve získá existující vlastnosti objektu blob a pak je použije k naplnění hlaviček, které se neaktualizují.

public static async Task SetBlobPropertiesAsync(BlobClient blob)
{
    Console.WriteLine("Setting blob properties...");

    try
    {
        // Get the existing properties
        BlobProperties properties = await blob.GetPropertiesAsync();

        BlobHttpHeaders headers = new BlobHttpHeaders
        {
            // Set the MIME ContentType every time the properties 
            // are updated or the field will be cleared
            ContentType = "text/plain",
            ContentLanguage = "en-us",

            // Populate remaining headers with 
            // the pre-existing properties
            CacheControl = properties.CacheControl,
            ContentDisposition = properties.ContentDisposition,
            ContentEncoding = properties.ContentEncoding,
            ContentHash = properties.ContentHash
        };

        // Set the blob's properties.
        await blob.SetHttpHeadersAsync(headers);
    }
    catch (RequestFailedException e)
    {
        Console.WriteLine($"HTTP error code {e.Status}: {e.ErrorCode}");
        Console.WriteLine(e.Message);
        Console.ReadLine();
    }
}

Následující příklad kódu získá systémové vlastnosti objektu blob a zobrazí některé hodnoty.

private static async Task GetBlobPropertiesAsync(BlobClient blob)
{
    try
    {
        // Get the blob properties
        BlobProperties properties = await blob.GetPropertiesAsync();

        // Display some of the blob's property values
        Console.WriteLine($" ContentLanguage: {properties.ContentLanguage}");
        Console.WriteLine($" ContentType: {properties.ContentType}");
        Console.WriteLine($" CreatedOn: {properties.CreatedOn}");
        Console.WriteLine($" LastModified: {properties.LastModified}");
    }
    catch (RequestFailedException e)
    {
        Console.WriteLine($"HTTP error code {e.Status}: {e.ErrorCode}");
        Console.WriteLine(e.Message);
        Console.ReadLine();
    }
}

Nastavení a načtení metadat

Metadata můžete zadat jako jeden nebo více párů název-hodnota v objektu blob nebo prostředku kontejneru. Pokud chcete nastavit metadata, přidejte do Metadata kolekce v prostředku páry name-value. Potom zavolejte jednu z následujících metod pro zápis hodnot:

Následující příklad kódu nastaví metadata objektu blob. Jedna hodnota je nastavena pomocí metody kolekce Add . Druhá hodnota je nastavená pomocí implicitní syntaxe klíče a hodnoty.

public static async Task AddBlobMetadataAsync(BlobClient blob)
{
    Console.WriteLine("Adding blob metadata...");

    try
    {
        IDictionary<string, string> metadata =
           new Dictionary<string, string>();

        // Add metadata to the dictionary by calling the Add method
        metadata.Add("docType", "textDocuments");

        // Add metadata to the dictionary by using key/value syntax
        metadata["category"] = "guidance";

        // Set the blob's metadata.
        await blob.SetMetadataAsync(metadata);
    }
    catch (RequestFailedException e)
    {
        Console.WriteLine($"HTTP error code {e.Status}: {e.ErrorCode}");
        Console.WriteLine(e.Message);
        Console.ReadLine();
    }
}

Následující příklad kódu přečte metadata objektu blob.

Pokud chcete načíst metadata, zavolejte metodu GetProperties nebo GetPropertiesAsync v objektu blob nebo kontejneru, aby se naplnilakolekce metadat, a pak si přečtěte hodnoty, jak je znázorněno v následujícím příkladu. Metoda GetProperties načte vlastnosti objektu blob a metadata voláním operace Get Blob Properties a Get Blob Metadata operace.

public static async Task ReadBlobMetadataAsync(BlobClient blob)
{
    try
    {
        // Get the blob's properties and metadata.
        BlobProperties properties = await blob.GetPropertiesAsync();

        Console.WriteLine("Blob metadata:");

        // Enumerate the blob's metadata.
        foreach (var metadataItem in properties.Metadata)
        {
            Console.WriteLine($"\tKey: {metadataItem.Key}");
            Console.WriteLine($"\tValue: {metadataItem.Value}");
        }
    }
    catch (RequestFailedException e)
    {
        Console.WriteLine($"HTTP error code {e.Status}: {e.ErrorCode}");
        Console.WriteLine(e.Message);
        Console.ReadLine();
    }
}

Zdroje informací

Další informace o správě systémových vlastností a uživatelsky definovaných metadat pomocí klientské knihovny Azure Blob Storage pro .NET najdete v následujících zdrojích informací.

Operace rozhraní REST API

Sada Azure SDK pro .NET obsahuje knihovny, které jsou postavené na rozhraní Azure REST API a umožňují interakci s operacemi rozhraní REST API prostřednictvím známých paradigmat .NET. Metody klientské knihovny pro správu systémových vlastností a uživatelsky definovaných metadat používají následující operace rozhraní REST API:

Prostředky klientské knihovny