Exercício – Carregar uma imagem para a sua conta de Armazenamento do Azure
Vamos adicionar código para carregar uma imagem para a sua conta de Armazenamento do Azure. Neste exemplo, iremos carregar a seguinte imagem para o nosso contentor do Armazenamento do Azure.
Se estiver a trabalhar na sua máquina local, clique com o botão direito do rato nesta imagem e guarde-a na mesma pasta onde tem a sua aplicação.
Se você estiver trabalhando no ambiente Microsoft Learn Sandbox, execute o seguinte comando na pasta do aplicativo para baixar a imagem em sua área restrita:
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
Em ambos os casos, o nome da imagem deve ser docs-and-friends-selfie-stick.png.
Carregar uma imagem para o armazenamento de blobs
Para trabalhar com objetos de blob individuais na sua conta de Armazenamento do Azure, utiliza um objeto BlobClient
. Para obter um BlobClient
objeto, chame o GetBlobClient
BlobContainerClient
método no objeto do contêiner onde o blob será armazenado. Ao chamar o método GetBlobClient
, também indica um nome para o blob no contentor. No nosso exemplo, o nome do blob será o mesmo que o nome do nosso ficheiro.
Quando tiver um objeto
BlobClient
, pode chamar o métodoUpload
para carregar um ficheiro para o Armazenamento de Blobs do Azure. Adicione o seguinte código ao arquivo .cs programa:string blobName = "docs-and-friends-selfie-stick"; string fileName = "docs-and-friends-selfie-stick.png"; BlobClient blobClient = container.GetBlobClient(blobName); blobClient.Upload(fileName, true);
O segundo argumento no método
Upload
especifica se um objeto de blob existente com o mesmo nome pode ser substituído. Por padrão, esse valor éfalse
. Nesse caso, estamos especificandotrue
para permitir que o programa seja executado várias vezes.
Listar objetos num contentor do Armazenamento de Blobs do Azure
Para verificar se o programa funcionou, irá utilizar outra capacidade do SDK do Azure Storage Blob: listar os objetos armazenados num contentor no armazenamento de blobs. Podemos fazê-lo ao chamar o método GetBlobs
num objeto BlobContainerClient
. O método GetBlobs
devolve uma lista paginável de objetos BlobItem
que contêm dados sobre cada blob no contentor.
Adicione o seguinte código ao seu programa após o código que você adicionou anteriormente e, em seguida, salve o arquivo:
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}"); }
Este código chama
GetBlobs
no objetoBlobContainerClient
para o contentor photos. Em seguida, é iterado através de cada blob e imprime o nome do mesmo, a data e a hora em que foi criado, assim como o respetivo tamanho. Ao executar o programa, este código deverá ser apresentado como uma única linha da imagem que foi carregada.O arquivo final .cs Programa deve ter esta aparência se você quiser verificar seu trabalho.
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}"); } } } }
Executar a aplicação
Compile e execute a aplicação para verificar se tudo funciona e carregar a imagem para o Armazenamento de Blobs do Azure.
Nota
Certifique-se de que está no diretório PhotoSharingApp.
dotnet run
Parabéns!
Você aprendeu o essencial de trabalhar com o pacote SDK de Blobs de Armazenamento do Azure e o Armazenamento de Blobs do Azure. Se quiser, explore ainda mais ao criar outro contentor, carregar mais imagens para a conta de armazenamento ou eliminar uma imagem. Pode saber mais na página do GitHub da biblioteca de cliente do Azure Storage Blob para .NET.
Carregar uma imagem para o armazenamento de blobs
Para trabalhar com objetos de blobs no contentor do Armazenamento do Azure, utilize um objeto BlockBlobClient
. O objeto BlockBlobClient
tem métodos para carregar, transferir, listar e eliminar objetos de blobs num contentor. Para obter um BlockBlobObject
, chame o método getBlockBlobClient
no objeto ContainerClient
. Em seguida, pode utilizar o método uploadFile
para carregar a sua imagem para o Armazenamento do Azure.
Adicione este código ao seu arquivo de programa .js índice imediatamente após o código que cria o contêiner:
const filename = 'docs-and-friends-selfie-stick.png'; const blockBlobClient = containerClient.getBlockBlobClient(filename); blockBlobClient.uploadFile(filename);
Listar objetos num contentor do Armazenamento de Blobs do Azure
Para confirmar que o código está a funcionar, podemos chamar o método
listBlobsFlat
no objetoContainerClient
no nosso programa. Adicione este código ao arquivo .js índice e salve o arquivo: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(); }
Este código imprime todos os blobs no contentor do Armazenamento de Blobs do Azure com a data em que o blob foi criado e o respetivo tamanho. Para o nosso programa, este código deve imprimir uma linha que representa a única imagem que carregamos.
O ficheiro final deverá ter o seguinte aspeto.
#!/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();
Executar a aplicação
Compile e execute a aplicação.
Nota
Certifique-se de que está no diretório PhotoSharingApp.
node index.js
Gorjeta
Se você receber um erro sobre o uso da palavra-chave, certifique-se de ter adicionado a palavra-chave à
main
definição daawait
função de acordo com aasync
etapa final nas instruções anteriores.
Parabéns!
Você aprendeu o essencial de trabalhar a Biblioteca de Cliente de Blob de Armazenamento do Azure para JavaScript e o Armazenamento de Blobs do Azure. Se quiser, explore ainda mais ao criar outro contentor, carregar mais imagens para a conta de armazenamento ou eliminar uma imagem. A página da Biblioteca de Cliente de Blob de Armazenamento do Azure para JavaScript npm.js tem muitos exemplos de como usar a biblioteca.