Ćwiczenie — przekazywanie obrazu na konto usługi Azure Storage
Dodajmy kod w celu przekazania obrazu na konto usługi Azure Storage. Na potrzeby tego przykładu przekażemy następujący obraz do naszego kontenera usługi Azure Storage.
Jeśli pracujesz na komputerze lokalnym, kliknij prawym przyciskiem myszy ten obraz i zapisz go w tym samym folderze, w którym znajduje się aplikacja.
Jeśli pracujesz w środowisku piaskownicy usługi Microsoft Learn, uruchom następujące polecenie w folderze aplikacji, aby pobrać obraz do piaskownicy:
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
W obu przypadkach nazwa obrazu powinna być docs-and-friends-selfie-stick.png.
Przekazywanie obrazu do magazynu obiektów blob
Aby pracować z poszczególnymi obiektami blob na koncie usługi Azure Storage, należy użyć obiektu BlobClient
. Aby uzyskać obiekt, wywołaj GetBlobClient
metodę BlobClient
w BlobContainerClient
obiekcie kontenera, w którym będzie przechowywany obiekt blob. Podczas wywoływania metody GetBlobClient
należy również podać nazwę obiektu blob w kontenerze. W naszym przykładzie nazwa obiektu blob będzie taka sama jak nazwa pliku.
Po utworzeniu obiektu
BlobClient
można wywołać metodęUpload
, aby przekazać plik do usługi Azure Blob Storage. Dodaj następujący kod do pliku 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);
Drugi argument w metodzie
Upload
określa, czy istniejący obiekt blob o tej samej nazwie może zostać zastąpiony. Domyślnie ta wartość tofalse
. W tym przypadku określamytrue
, że program będzie uruchamiany wiele razy.
Wyświetlanie listy obiektów w kontenerze usługi Azure Blob Storage
Aby sprawdzić, czy nasz program działa, przećwiczymy inną możliwość zestawu SDK obiektów blob usługi Azure Storage, aby wyświetlić listę obiektów przechowywanych w kontenerze w magazynie obiektów blob. Można to zrobić, wywołując metodę GetBlobs
w obiekcie BlobContainerClient
. Metoda GetBlobs
zwraca listę obiektów BlobItem
, które zawierają dane dotyczące każdego obiektu blob w kontenerze.
Dodaj następujący kod do programu po wcześniej dodanym kodzie, a następnie zapisz plik:
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}"); }
Ten kod wywołuje element
GetBlobs
w obiekcieBlobContainerClient
dla kontenera photos. Następnie wykonuje iterację przez każdy obiekt blob, wyświetlając nazwę obiektu blob, datę i godzinę utworzenia obiektu blob oraz rozmiar obiektu blob. Po uruchomieniu programu ten kod powinien pojawić się jako pojedynczy wiersz dla obrazu, który został przekazany.Końcowy plik Program.cs powinien wyglądać następująco, jeśli chcesz sprawdzić swoją pracę.
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}"); } } } }
Uruchom aplikację
Skompiluj i uruchom aplikację, aby upewnić się, że wszystko działa, i przekaż obraz do usługi Azure Blob Storage.
Uwaga
Upewnij się, że jesteś w katalogu PhotoSharingApp.
dotnet run
Gratulacje
Znasz już podstawowe informacje dotyczące pracy z pakietem zestawu SDK obiektów blob usługi Azure Storage i usługą Azure Blob Storage. Jeśli chcesz, dowiedz się więcej, tworząc kolejny kontener, przesyłając więcej obrazów na konto magazynu lub usuwając obraz. Aby dowiedzieć się więcej, zobacz bibliotekę klienta obiektów blob usługi Azure Storage dla platformy .NET w serwisie GitHub.
Przekazywanie obrazu do magazynu obiektów blob
Aby pracować z obiektami blob w kontenerze usługi Azure Storage, należy użyć obiektu BlockBlobClient
. Obiekt BlockBlobClient
ma metody przekazywania, pobierania, wyświetlania i usuwania obiektów blob w kontenerze. Aby uzyskać element BlockBlobObject
, wywołaj metodę getBlockBlobClient
w obiekcie ContainerClient
. Następnie możesz użyć metody uploadFile
, aby przekazać obraz do usługi Azure Storage.
Dodaj ten kod do pliku programu index.js bezpośrednio po kodzie, który tworzy kontener:
const filename = 'docs-and-friends-selfie-stick.png'; const blockBlobClient = containerClient.getBlockBlobClient(filename); blockBlobClient.uploadFile(filename);
Wyświetlanie listy obiektów w kontenerze usługi Azure Blob Storage
Aby sprawdzić, czy nasz kod działa, możemy wywołać metodę
listBlobsFlat
w obiekcieContainerClient
w naszym programie. Dodaj ten kod do pliku index.js , a następnie zapisz plik: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(); }
Ten kod spowoduje wyświetlenie wszystkich obiektów blob w kontenerze usługi Azure Blob Storage z datą utworzenia obiektu blob i jego rozmiarem. W naszym programie ten kod powinien wyświetlić jeden wiersz reprezentujący przekazany pojedynczy obraz.
Końcowy plik powinien wyglądać następująco.
#!/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();
Uruchom aplikację
Skompiluj i uruchom aplikację.
Uwaga
Upewnij się, że jesteś w katalogu PhotoSharingApp.
node index.js
Napiwek
Jeśli wystąpi błąd dotyczący używania słowa kluczowego
await
, upewnij się, że słowo kluczowe zostało dodaneasync
domain
definicji funkcji zgodnie z ostatnim krokiem w poprzednich instrukcjach.
Gratulacje
Znasz już podstawowe informacje dotyczące pracy z biblioteką klienta obiektów blob usługi Azure Storage dla języków JavaScript i Azure Blob Storage. Jeśli chcesz, dowiedz się więcej, tworząc kolejny kontener, przesyłając więcej obrazów na konto magazynu lub usuwając obraz. Biblioteka klienta obiektów blob usługi Azure Storage dla języka JavaScript npm.js zawiera wiele przykładów używania biblioteki.