Gyakorlat – Kép feltöltése az Azure-tárfiókba

Befejeződött

Olyan kódot fogunk létrehozni, amellyel képet tölthetünk fel az Azure-tárfiókba. Ebben a példában az alábbi képet fogjuk feltölteni az Azure Storage-tárolóba.

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

Ha a helyi gépen dolgozik, kattintson a jobb gombbal erre a képre, és mentse azt ugyanabba a mappába, ahol az alkalmazás található.

  1. Ha a Microsoft Learn tesztkörnyezetben dolgozik, futtassa az alábbi parancsot az alkalmazásmappában a rendszerkép tesztkörnyezetbe való letöltéséhez:

    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
    

    Mindkét esetben a kép neve docs-and-friends-selfie-stick.png legyen.

Kép feltöltése blobtárolóba

Ha különálló blobobjektumokkal dolgozik az Azure-tárfiókban, akkor a BlobClient objektumot kell használnia. Az objektum lekéréséhez BlobClient hívja meg a GetBlobClient metódust annak a BlobContainerClient tárolónak az objektumán, amelyben a blob lesz tárolva. A GetBlobClient metódus meghívásakor meg kell adnia a tárolóban található blob nevét is. Ebben a példában a blob neve ugyanaz lesz, mint a fájl neve.

  1. Ha már megvan a BlobClient objektum, az Upload metódus meghívásával feltöltheti a fájlt az Azure Blob Storage-ba. Adja hozzá a következő kódot a Program.cs fájlhoz:

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

    Az Upload metódus második argumentuma azt határozza meg, hogy felülírható-e egy már létező blobobjektum, ha ugyanaz a neve. Alapértelmezés szerint ez az érték .false Ebben az esetben azt adhatja meg true , hogy a program többször fusson.

Az Azure Blob Storage-tárolóban lévő objektumok listázása

Annak ellenőrzéséhez, hogy a program működik-e, az Azure Storage Blobs SDK egy másik képességét fogjuk használni, amely a blobtárolóban tárolt objektumok listázására szolgál. Ezt úgy végezhetjük el, ha meghívjuk a GetBlobs metódust a BlobContainerClient objektumon. A GetBlobs metódus BlobItem objektumok lapozható listáját adja vissza, amelyben a tároló minden blobjáról szerepel adat.

  1. Adja hozzá a következő kódot a programhoz a korábban hozzáadott kód után, majd mentse a fájlt:

    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}");
    }
    

    Ez a kód meghívja a GetBlobs metódust a photos tároló BlobContainerClient objektumán. Ezután végighalad mindegyik blobon, és kiírja a blob nevét, a blob létrehozásának dátumát és idejét és a blob méretét. A program futtatásakor ez a kód egyetlen sort ír ki a feltöltött képhez.

  2. Az utolsó Program.cs fájlnak így kell kinéznie, ha ellenőrizni szeretné a munkáját.

    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}");
                }
            }
        }
    }
    

Az alkalmazás futtatása

  1. Hozza létre és futtassa az alkalmazást, és ellenőrizze, hogy minden működik-e, és töltse fel a képet az Azure Blob Storage-ba.

    Megjegyzés:

    Ügyeljen rá, hogy a PhotoSharingApp könyvtárban legyen.

    dotnet run
    

Gratulálunk

Megismerte az Azure Storage Blobs SDK-csomag és az Azure Blob Storage használatának alapjait. Ha szeretné, folytathatja a gyakorlást: hozzon létre egy újabb tárolót, töltsön fel újabb képeket a tárfiókba, vagy töröljön képeket. További információt az Azure Storage Blob ügyfélkódtára .NET-e GitHub-oldalakhoz című cikkben talál.

Kép feltöltése blobtárolóba

Ha blobobjektumokkal dolgozik az Azure-tárfiókban, akkor a BlockBlobClient objektumot kell használnia. A BlockBlobClient objektumban találhatók olyan metódusok, amelyekkel a tároló objektumait lehet feltölteni, letölteni, listázni és törölni. A BlockBlobObject használatához hívja meg a getBlockBlobClient metódust a ContainerClient objektumon. Ezután már az uploadFile metódussal feltöltheti a képet az Azure-tárolóba.

  1. Adja hozzá ezt a kódot az index.js programfájlhoz közvetlenül a tárolót létrehozó kód után:

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

Az Azure Blob Storage-tárolóban lévő objektumok listázása

  1. A kód működésének ellenőrzéséhez meghívhatjuk a listBlobsFlat metódust a programban a ContainerClient objektumon. Adja hozzá ezt a kódot az index.js fájlhoz, majd mentse a fájlt:

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

    Ez a kód kiírja az Azure Blob Storage-tárolóban lévő összes blobot a blob létrehozásának dátumával és méretével. Programunk esetében ennek a kódnak egy sort kell kinyomtatnia, amely a feltöltött egyetlen képet jelöli.

  2. A végső fájlnak a következőhöz kell hasonlítania.

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

Az alkalmazás futtatása

  1. Hozza létre és futtassa az alkalmazást.

    Megjegyzés:

    Ügyeljen rá, hogy a PhotoSharingApp könyvtárban legyen.

    node index.js
    

    Tipp.

    Ha hibaüzenetet kap a await kulcsszó használatával kapcsolatban, győződjön meg arról, hogy az előző utasítások utolsó lépésében hozzáadta a async kulcsszót main a függvénydefinícióhoz.

Gratulálunk

Megismerte a JavaScripthez és az Azure Blob Storage-hoz készült Azure Storage Blob Ügyfélkódtár használatának alapvető alapjait. Ha szeretné, folytathatja a gyakorlást: hozzon létre egy újabb tárolót, töltsön fel újabb képeket a tárfiókba, vagy töröljön képeket. Az Azure Storage Blob Client Library for JavaScript npm.js lap számos példát mutat be a kódtár használatára.