Övning – Ladda upp en avbildning till ditt Azure Storage-konto

Slutförd

Nu ska du lägga till kod för att ladda upp en avbildning till ditt Azure Storage-konto. I det här exemplet ska vi ladda upp följande avbildning till vår Azure Storage-container.

An image of the Docs mascot and the Azure mascot taking a selfie.

Om du arbetar på den lokala datorn högerklickar du på den här bilden och sparar den i samma mapp som där du har ditt program.

  1. Om du arbetar i Sandbox-miljön för Microsoft Learn kör du följande kommando i programmappen för att ladda ned avbildningen till sandbox-miljön:

    wget https://github.com/MicrosoftDocs/mslearn-connect-app-to-azure-storage/blob/main/images/docs-and-friends-selfie-stick.png?raw=true -O docs-and-friends-selfie-stick.png
    

    I båda fallen ska namnet på bilden vara docs-and-friends-selfie-stick.png.

Ladda upp en avbildning till Blob Storage

Om du vill arbeta med enskilda blobobjekt på ditt Azure Storage-konto använder du ett BlobClient-objekt. Om du vill hämta ett BlobClient objekt anropar GetBlobClient du metoden för BlobContainerClient objektet i containern där bloben ska lagras. När du anropar GetBlobClient-metoden anger du även ett namn för blobben i containern. I det här exemplet är blobnamnet detsamma som filnamnet.

  1. När du har ett BlobClient-objekt kan du anropa Upload-metoden för att ladda upp en fil till Azure Blob Storage. Lägg till följande kod i filen Program.cs :

    string blobName = "docs-and-friends-selfie-stick";
    string fileName = "docs-and-friends-selfie-stick.png";
    BlobClient blobClient = container.GetBlobClient(blobName);
    blobClient.Upload(fileName, true);
    

    Det andra argumentet i Upload-metoden anger om ett befintligt blobobjekt med samma namn kan skrivas över. Som standard är falsedet här värdet . I det här fallet anger true vi att programmet ska kunna köras flera gånger.

Lista objekt i en Azure Blob Storage-container

För att kontrollera att vårt program fungerade ska vi använda oss av en annan funktion i Azure Storage Blobs SDK, nämligen att göra en lista med de objekt som lagras i en container i blobblagringen. Detta kan göras genom att anropa GetBlobs-metoden för ett BlobContainerClient-objekt. GetBlobs-metoden returnerar en växlingsbar lista över BlobItem-objekt som innehåller data om varje blob i containern.

  1. Lägg till följande kod i programmet efter den kod som du tidigare lade till och spara sedan filen:

    var blobs = container.GetBlobs();
    foreach (var blob in blobs)
    {
        Console.WriteLine($"{blob.Name} --> Created On: {blob.Properties.CreatedOn:yyyy-MM-dd HH:mm:ss}  Size: {blob.Properties.ContentLength}");
    }
    

    Den här koden anropar GetBlobs i BlobContainerClient-objektet för containern foton. Sedan itererar den genom varje blob och skriver ut namnet på blobben, datum och tid då blobben skapades och storleken på blobben. När du kör programmet bör koden visas som en enskild rad för den avbildning som har laddats upp.

  2. Den sista Program.cs-filen bör se ut så här om du vill kontrollera ditt arbete.

    using System;
    using Microsoft.Extensions.Configuration;
    using System.IO;
    using Azure.Storage.Blobs;
    
    namespace PhotoSharingApp
    {
        class Program
        {
            static void Main(string[] args)
            {
                var builder = new ConfigurationBuilder()
                    .SetBasePath(Directory.GetCurrentDirectory())
                    .AddJsonFile("appsettings.json");
    
                var configuration = builder.Build();
    
                // Get a connection string to our Azure Storage account.
                var connectionString = configuration.GetConnectionString("StorageAccount");
    
                // Get a reference to the container client object so you can create the "photos" container
                string containerName = "photos";
                BlobContainerClient container = new BlobContainerClient(connectionString, containerName);
                container.CreateIfNotExists();
    
                // Uploads the image to Blob storage.  If a blb already exists with this name it will be overwritten
                string blobName = "docs-and-friends-selfie-stick";
                string fileName = "docs-and-friends-selfie-stick.png";
                BlobClient blobClient = container.GetBlobClient(blobName);
                blobClient.Upload(fileName, true);
    
                // List out all the blobs in the container
                var blobs = container.GetBlobs();
                foreach (var blob in blobs)
                {
                    Console.WriteLine($"{blob.Name} --> Created On: {blob.Properties.CreatedOn:yyyy-MM-dd HH:mm:ss}  Size: {blob.Properties.ContentLength}");
                }
            }
        }
    }
    

Kör appen

  1. Skapa och kör programmet för att kontrollera att allt fungerar och ladda upp din avbildning till Azure Blob Storage.

    Kommentar

    Se till att du befinner dig i katalogen PhotoSharingApp.

    dotnet run
    

Grattis!

Du har lärt dig det viktigaste i att arbeta med Azure Storage Blobs SDK-paketet och Azure Blob Storage. Om du vill kan du utforska vidare genom att skapa en annan container, ladda upp ytterligare avbildningar till ditt lagringskonto eller ta bort en avbildning. Du kan läsa mer på sidan för Azure Storage Blobs klientbibliotek för .NET GitHub.

Ladda upp en avbildning till Blob Storage

Om du vill arbeta med blobbobjekt i Azure Storage-containern använder du ett BlockBlobClient-objekt. BlockBlobClient-objektet har metoder för att ladda upp, ladda ned, lista och ta bort blobbobjekt i en container. Om du vill hämta en BlockBlobObject, anropar du getBlockBlobClient-metoden för ContainerClient-objektet. Sedan kan du använda uploadFile-metoden för att ladda upp avbildningen till Azure Storage.

  1. Lägg till den här koden i index.js-programfilen omedelbart efter koden som skapar containern:

    const filename = 'docs-and-friends-selfie-stick.png';
    const blockBlobClient = containerClient.getBlockBlobClient(filename);
    blockBlobClient.uploadFile(filename);
    

Lista objekt i en Azure Blob Storage-container

  1. För att kontrollera att koden fungerar kan du anropa listBlobsFlat-metoden på ContainerClient-objektet i programmet. Lägg till den här koden i filen index.js och spara sedan filen:

    let blobs = containerClient.listBlobsFlat();
    let blob = await blobs.next();
    while (!blob.done) {
        console.log(`${blob.value.name} --> Created: ${blob.value.properties.createdOn}   Size: ${blob.value.properties.contentLength}`);
        blob = await blobs.next();
    }
    

    Koden skriver ut alla blobbar i Azure Blob Storage-containern med det datum då blobben skapades och dess storlek. För vårt program bör den här koden skriva ut en rad som representerar den enda bild som vi har laddat upp.

  2. Den slutgiltiga filen bör se ut så här.

    #!/usr/bin/env node
    require('dotenv').config();
    
    const { BlobServiceClient } = require("@azure/storage-blob");
    
    const storageAccountConnectionString = process.env.AZURE_STORAGE_CONNECTION_STRING;
    const blobServiceClient = BlobServiceClient.fromConnectionString(storageAccountConnectionString);
    
    async function main() {
    // Create a container (folder) if it does not exist
    const containerName = 'photos';
    const containerClient = blobServiceClient.getContainerClient(containerName);
    const containerExists = await containerClient.exists()
    if ( !containerExists) {
        const createContainerResponse = await containerClient.createIfNotExists();
        console.log(`Create container ${containerName} successfully`, createContainerResponse.succeeded);
    }
    else {
        console.log(`Container ${containerName} already exists`);
    }
    
    // Upload the file
    const filename = 'docs-and-friends-selfie-stick.png';
    const blockBlobClient = containerClient.getBlockBlobClient(filename);
    blockBlobClient.uploadFile(filename);
    
    // Get a list of all the blobs in the container
    let blobs = containerClient.listBlobsFlat();
    let blob = await blobs.next();
    while (!blob.done) {
        console.log(`${blob.value.name} --> Created: ${blob.value.properties.createdOn}   Size: ${blob.value.properties.contentLength}`);
        blob = await blobs.next();
    }
    }
    main();
    

Kör appen

  1. Skapa och kör programmet.

    Kommentar

    Se till att du befinner dig i katalogen PhotoSharingApp.

    node index.js
    

    Dricks

    Om du får ett felmeddelande om användningen av nyckelordet await kontrollerar du att du har lagt till nyckelordet async i funktionsdefinitionen main enligt det sista steget i föregående instruktioner.

Grattis!

Du har lärt dig det viktigaste för att arbeta med Azure Storage Blob Client Library för JavaScript och Azure Blob Storage. Om du vill kan du utforska vidare genom att skapa en annan container, ladda upp ytterligare avbildningar till ditt lagringskonto eller ta bort en avbildning. Sidan Azure Storage Blob Client Library for JavaScript npm.js innehåller många exempel på hur du använder biblioteket.