Snabbstart: Azure Blob Storage-klientbiblioteket v11 för .NET

Kom igång med Azure Blob Storage-klientbiblioteket v11 för .NET. Azure Blob Storage är Microsofts objektlagringslösning för molnet. Följ stegen för att installera paketet och prova exempelkoden för grundläggande uppgifter. Blob Storage är optimerad för lagring av enorma mängder ostrukturerade data.

Anteckning

Den här snabbstarten använder en äldre version av Azure Blob Storage-klientbiblioteket. Information om hur du kommer igång med den senaste versionen finns i Snabbstart: Azure Blob Storage-klientbiblioteket v12 för .NET.

Använd Azure Blob Storage-klientbiblioteket för .NET för att:

  • Skapa en container
  • Ange behörigheter för en container
  • Skapa en blob i Azure Storage
  • Ladda ned bloben till din lokala dator
  • Lista alla blobar i en container
  • Ta bort en container

Ytterligare resurser:

Förutsättningar

Inrätta

Det här avsnittet går igenom hur du förbereder ett projekt för att arbeta med Azure Blob Storage klientbibliotek för .NET.

Skapa projektet

Skapa först ett .NET Core-program med namnet blob-quickstart.

  1. I ett konsolfönster (till exempel cmd, PowerShell eller Bash) använder du kommandot för att skapa en ny konsolapp med namnet dotnet new blob-quickstart. Det här kommandot skapar ett enkelt "Hello World" C#-projekt med en enda källfil: Program.cs.

    dotnet new console -n blob-quickstart
    
  2. Växla till den nyligen skapade mappen blob-quickstart och skapa appen för att kontrollera att allt fungerar som det ska.

    cd blob-quickstart
    
    dotnet build
    

Förväntade utdata från bygget bör se ut ungefär så här:

C:\QuickStarts\blob-quickstart> dotnet build
Microsoft (R) Build Engine version 16.0.450+ga8dc7f1d34 for .NET Core
Copyright (C) Microsoft Corporation. All rights reserved.

  Restore completed in 44.31 ms for C:\QuickStarts\blob-quickstart\blob-quickstart.csproj.
  blob-quickstart -> C:\QuickStarts\blob-quickstart\bin\Debug\netcoreapp2.1\blob-quickstart.dll

Build succeeded.
    0 Warning(s)
    0 Error(s)

Time Elapsed 00:00:03.08

Installera paketet

När du fortfarande är i programkatalogen installerar du Azure Blob Storage-klientbiblioteket för .NET-paketet med hjälp av dotnet add package kommandot .

dotnet add package Microsoft.Azure.Storage.Blob

Konfigurera appramverket

Från projektkatalogen:

  1. Öppna filen Program.cs i redigeringsprogrammet
  2. Ta bort Console.WriteLine -instruktionen
  3. Lägga till using direktiv
  4. Skapa en ProcessAsync metod där huvudkoden för exemplet ska finnas
  5. Anropa metoden asynkront ProcessAsync från Main

Här är koden:

using System;
using System.IO;
using System.Threading.Tasks;
using Microsoft.Azure.Storage;
using Microsoft.Azure.Storage.Blob;

namespace blob_quickstart
{
    class Program
    {
        public static async Task Main()
        {
            Console.WriteLine("Azure Blob Storage - .NET quickstart sample\n");

            await ProcessAsync();

            Console.WriteLine("Press any key to exit the sample application.");
            Console.ReadLine();
        }

        private static async Task ProcessAsync()
        {
        }
    }
}

Kopiera dina autentiseringsuppgifter från Azure-portalen

När exempelprogrammet gör en begäran till Azure Storage måste det auktoriserats. Om du vill auktorisera en begäran lägger du till autentiseringsuppgifterna för ditt lagringskonto i programmet som en anslutningssträng. Visa autentiseringsuppgifterna för lagringskontot genom att följa dessa steg:

  1. Gå till Azure Portal.

  2. Leta rätt på ditt lagringskonto.

  3. Välj Åtkomstnycklar i avsnittet Inställningar i lagringskontoöversikten. Här kan du visa åtkomstnycklarna för kontot och den fullständiga anslutningssträngen för varje nyckel.

  4. Sök efter värdet för Anslutningssträng under key1 och kopiera anslutningssträngen genom att välja Kopiera. Du lägger till strängvärdet för anslutningen till en miljövariabel i nästa steg.

    Skärmbild som visar hur man kopierar en anslutningssträng från Azure-portalen

Konfigurera anslutningssträngen för lagring

När du har kopierat anslutningssträngen ska du skriva den till en ny miljövariabel på den lokala dator där programmet körs. Konfigurera miljövariabeln genom att öppna ett konsolfönster och följa anvisningarna för ditt operativsystem. Ersätt <yourconnectionstring> med din faktiska anslutningssträng.

Windows

setx AZURE_STORAGE_CONNECTION_STRING "<yourconnectionstring>"

När du har lagt till miljövariabeln i Windows måste du starta en ny instans av kommandofönstret.

Linux

export AZURE_STORAGE_CONNECTION_STRING="<yourconnectionstring>"

MacOS

export AZURE_STORAGE_CONNECTION_STRING="<yourconnectionstring>"

När du har lagt till miljövariabeln startar du om alla program som körs och behöver läsa miljövariabeln. Du kan till exempel starta om utvecklingsmiljön eller redigeringsredigeraren innan du fortsätter.

Objektmodell

Azure Blob Storage är optimerat för att lagra enorma mängder ostrukturerade data. Ostrukturerade data är data som inte följer en viss datamodell eller definition, till exempel text eller binära data. I blobblagringen finns tre typer av resurser:

  • Lagringskontot.
  • En container på lagringskontot
  • En blobb i en container

Följande diagram visar relationen mellan de här resurserna.

Diagram över blobblagringens arkitektur

Använd följande .NET-klasser för att interagera med dessa resurser:

  • CloudStorageAccount:Klassen CloudStorageAccount representerar ditt Azure Storage-konto. Använd den här klassen för att ge åtkomst till Blob Storage med åtkomstnycklarna för ditt konto.
  • CloudBlobClient: CloudBlobClient Klassen ger en åtkomstpunkt till Blob Service i din kod.
  • CloudBlobContainer:Klassen CloudBlobContainer representerar en blobcontainer i koden.
  • CloudBlockBlob:Objektet CloudBlockBlob representerar en blockblob i koden. Blockblobbar består av datablock som kan hanteras individuellt.

Kodexempel

De här exempelkodfragmenten visar hur du utför följande med Azure Blob Storage-klientbiblioteket för .NET:

Autentisera klienten

Koden nedan kontrollerar att miljövariabeln innehåller en anslutningssträng som kan parsas för att skapa ett CloudStorageAccount-objekt som pekar på lagringskontot. Kontrollera att anslutningssträngen är giltig med hjälp av TryParse-metoden. Om TryParse lyckas initierar den variabeln storageAccount och returnerar true .

Lägg till den här koden i ProcessAsync metoden :

// Retrieve the connection string for use with the application. The storage 
// connection string is stored in an environment variable on the machine 
// running the application called AZURE_STORAGE_CONNECTION_STRING. If the 
// environment variable is created after the application is launched in a 
// console or with Visual Studio, the shell or application needs to be closed
// and reloaded to take the environment variable into account.
string storageConnectionString = Environment.GetEnvironmentVariable("AZURE_STORAGE_CONNECTION_STRING");

// Check whether the connection string can be parsed.
CloudStorageAccount storageAccount;
if (CloudStorageAccount.TryParse(storageConnectionString, out storageAccount))
{
    // If the connection string is valid, proceed with operations against Blob
    // storage here.
    // ADD OTHER OPERATIONS HERE
}
else
{
    // Otherwise, let the user know that they need to define the environment variable.
    Console.WriteLine(
        "A connection string has not been defined in the system environment variables. " +
        "Add an environment variable named 'AZURE_STORAGE_CONNECTION_STRING' with your storage " +
        "connection string as a value.");
    Console.WriteLine("Press any key to exit the application.");
    Console.ReadLine();
}

Anteckning

Om du vill utföra resten av åtgärderna i den här artikeln ersätter du i koden ovan med // ADD OTHER OPERATIONS HERE kodfragmenten i följande avsnitt.

Skapa en container

För att kunna skapa containern måste du först skapa en instans av objektet CloudBlobClient som pekar på bloblagringen i lagringskontot. Skapa en instans av objektet CloudBlobContainer och skapa sedan behållaren.

I det här fallet anropar koden metoden CreateAsync för att skapa containern. Ett GUID-värde läggs till containerns namn så att det blir unikt. I en produktionsmiljö är det ofta bättre att använda metoden CreateIfNotExistsAsync för att endast skapa en container om den inte redan finns.

Viktigt

Containernamn måste använda gemener. Mer information om namngivning av containrar och blobar finns i Namngivning och referens av containrar, blobar och metadata.

// Create the CloudBlobClient that represents the 
// Blob storage endpoint for the storage account.
CloudBlobClient cloudBlobClient = storageAccount.CreateCloudBlobClient();

// Create a container called 'quickstartblobs' and 
// append a GUID value to it to make the name unique.
CloudBlobContainer cloudBlobContainer = 
    cloudBlobClient.GetContainerReference("quickstartblobs" + 
        Guid.NewGuid().ToString());
await cloudBlobContainer.CreateAsync();

Ange behörigheter för en container

Ange behörigheter för containern så att alla blobar i containern är offentliga. Om en blob är offentlig kan den användas anonymt av alla klienter.

// Set the permissions so the blobs are public.
BlobContainerPermissions permissions = new BlobContainerPermissions
{
    PublicAccess = BlobContainerPublicAccessType.Blob
};
await cloudBlobContainer.SetPermissionsAsync(permissions);

Upload blobar till en container

Följande kodfragment hämtar en referens till ett objekt genom att anropa CloudBlockBlob metoden GetBlockBlobReference för containern som skapades i föregående avsnitt. Den laddar sedan upp den valda lokala filen till bloben genom att anropa metoden UploadFromFileAsync. Den här metoden skapar bloben om den inte redan finns, och skriver över den om den finns.

// Create a file in your local MyDocuments folder to upload to a blob.
string localPath = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
string localFileName = "QuickStart_" + Guid.NewGuid().ToString() + ".txt";
string sourceFile = Path.Combine(localPath, localFileName);
// Write text to the file.
File.WriteAllText(sourceFile, "Hello, World!");

Console.WriteLine("Temp file = {0}", sourceFile);
Console.WriteLine("Uploading to Blob storage as blob '{0}'", localFileName);

// Get a reference to the blob address, then upload the file to the blob.
// Use the value of localFileName for the blob name.
CloudBlockBlob cloudBlockBlob = cloudBlobContainer.GetBlockBlobReference(localFileName);
await cloudBlockBlob.UploadFromFileAsync(sourceFile);

Visa blobar i en container

Visa en lista över blobarna i containern med hjälp av metoden ListBlobsSegmentedAsync. I det här fallet har endast en blob lagts till i containern, så liståtgärden returnerar bara den bloben.

Om det finns för många blobar för att returnera i ett anrop (som standard fler än 5 000) returnerar metoden ett segment av den totala ListBlobsSegmentedAsync resultatuppsättningen och en fortsättningstoken. Om du vill hämta nästa segment blobar anger du det fortsättningstoken som returnerades av tidigare anrop, och så vidare tills fortsättningstokenet är null. Ett fortsättningstoken med nullvärde anger att alla blobar har hämtats. Koden visar hur du använder fortsättningstoken för bästa praxis.

// List the blobs in the container.
Console.WriteLine("List blobs in container.");
BlobContinuationToken blobContinuationToken = null;
do
{
    var results = await cloudBlobContainer.ListBlobsSegmentedAsync(null, blobContinuationToken);
    // Get the value of the continuation token returned by the listing call.
    blobContinuationToken = results.ContinuationToken;
    foreach (IListBlobItem item in results.Results)
    {
        Console.WriteLine(item.Uri);
    }
} while (blobContinuationToken != null); // Loop while the continuation token is not null.

Ladda ned blobbar

Ladda ned bloben som skapades tidigare till ditt lokala filsystem med hjälp av metoden DownloadToFileAsync. Exempelkoden lägger till suffixet "_DOWNLOADED" i blobnamnet så att du kan se båda filerna i det lokala filsystemet.

// Download the blob to a local file, using the reference created earlier.
// Append the string "_DOWNLOADED" before the .txt extension so that you 
// can see both files in MyDocuments.
string destinationFile = sourceFile.Replace(".txt", "_DOWNLOADED.txt");
Console.WriteLine("Downloading blob to {0}", destinationFile);
await cloudBlockBlob.DownloadToFileAsync(destinationFile, FileMode.Create);

Ta bort en container

Följande kod rensar resurserna som appen skapade genom att ta bort hela containern med hjälp av CloudBlobContainer.DeleteAsync. Du kan även ta bort de lokala filerna om du vill.

Console.WriteLine("Press the 'Enter' key to delete the example files, " +
    "example container, and exit the application.");
Console.ReadLine();
// Clean up resources. This includes the container and the two temp files.
Console.WriteLine("Deleting the container");
if (cloudBlobContainer != null)
{
    await cloudBlobContainer.DeleteIfExistsAsync();
}
Console.WriteLine("Deleting the source, and downloaded files");
File.Delete(sourceFile);
File.Delete(destinationFile);

Kör koden

Den här appen skapar en testfil i din lokala MyDocuments-mapp och laddar upp den till Blob Storage. Exemplet visar sedan blobarna i containern och laddar ned filen med ett nytt namn så att du kan jämföra de gamla och nya filerna.

Gå till programkatalogen och skapa och kör sedan programmet.

dotnet build
dotnet run

Appens utdata liknar följande exempel:

Azure Blob storage - .NET Quickstart example

Created container 'quickstartblobs33c90d2a-eabd-4236-958b-5cc5949e731f'

Temp file = C:\Users\myusername\Documents\QuickStart_c5e7f24f-a7f8-4926-a9da-96
97c748f4db.txt
Uploading to Blob storage as blob 'QuickStart_c5e7f24f-a7f8-4926-a9da-9697c748f
4db.txt'

Listing blobs in container.
https://storagesamples.blob.core.windows.net/quickstartblobs33c90d2a-eabd-4236-
958b-5cc5949e731f/QuickStart_c5e7f24f-a7f8-4926-a9da-9697c748f4db.txt

Downloading blob to C:\Users\myusername\Documents\QuickStart_c5e7f24f-a7f8-4926
-a9da-9697c748f4db_DOWNLOADED.txt

Press any key to delete the example files and example container.

När du trycker på Retur-tangenten tas lagringscontainern och filerna bort. Innan du tar bort dem bör du kontrollera att de två filerna finns i mappen Mina dokument. Du kan öppna dem och se att de är identiska. Kopiera blobens URL från konsolfönstret och klistra in den i en webbläsare om du vill se innehållet i bloben.

När du har kontrollerat filerna trycker du på valfri tangent för att avsluta demonstrationen och ta bort testfilerna.

Nästa steg

I den här snabbstarten har du lärt dig att ladda upp, ladda ned och lista blobar med hjälp av .NET.

Om du vill lära dig hur du skapar en webbapp som laddar upp en bild till Blob Storage fortsätter du till: