Övning – Ladda upp en avbildning till ditt Azure Storage-konto
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.
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.
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.
När du har ett
BlobClient
-objekt kan du anropaUpload
-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 ärfalse
det här värdet . I det här fallet angertrue
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.
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
iBlobContainerClient
-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.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
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.
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
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.
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
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 nyckelordetasync
i funktionsdefinitionenmain
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.