Gyakorlat – Kép feltöltése az Azure-tárfiókba
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.
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ó.
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.
Ha már megvan a
BlobClient
objektum, azUpload
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 megtrue
, 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.
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.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
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.
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
A kód működésének ellenőrzéséhez meghívhatjuk a
listBlobsFlat
metódust a programban aContainerClient
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.
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
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 aasync
kulcsszótmain
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.