Операції CRUD в Azure Blob Storage за допомогою C#

Azure Blob Storage — це масштабоване і безпечне хмарне рішення для зберігання неструктурованих даних, таких як зображення, відео, документи та резервні копії. Використовуючи Azure Blob Storage SDK для .NET, ви можете програмно виконувати операції CRUD.

Цей посібник надає покрокове пояснення виконання цих операцій на C#.

1. Передумови

  1. Обліковий запис Azure Storage
  • Створіть обліковий запис Azure Storage в Azure Portal.
  • Отримайте рядок підключення в розділі Access Keys.

2. Встановіть необхідні пакети NuGet
Встановіть пакет Azure.Storage.Blobs:

Install-Package Azure.Storage.Blobs

3. Налаштування проєкту
Додайте наступні простори імен:

using Azure.Storage.Blobs;   
using Azure.Storage.Blobs.Models;   
using System;   
using System.IO;   
using System.Threading.Tasks;

2. Налаштування клієнта Azure Blob Storage

Створіть BlobServiceClient, використовуючи рядок підключення:

string connectionString = "Your_Storage_Account_Connection_String"; // Замість цього введіть ваш рядок підключення  
BlobServiceClient blobServiceClient = new BlobServiceClient(connectionString);  

// Отримуємо посилання на контейнер  
string containerName = "sample-container";  
BlobContainerClient containerClient = blobServiceClient.GetBlobContainerClient(containerName);  

// Створюємо контейнер, якщо він ще не існує  
await containerClient.CreateIfNotExistsAsync();  
Console.WriteLine($"Контейнер '{containerName}' створений або вже існує.");

3. Операції CRUD

a. Створити (Завантажити) Blob

Ви можете завантажувати файли або текст у blob.

  1. Завантажити файл
string localFilePath = "path/to/your/file.txt";  
string blobName = "uploaded-file";  
BlobClient blobClient = containerClient.GetBlobClient(blobName);  

// Завантажуємо файл  
await blobClient.UploadAsync(localFilePath, overwrite: true);  
Console.WriteLine($"Файл '{localFilePath}' завантажено як blob '{blobName}'.");

2. Завантажити текст

string blobName = "sample-text.txt";  
BlobClient blobClient = containerClient.GetBlobClient(blobName);  

// Завантажуємо текст  
string content = "Привіт, Azure Blob Storage!";  
using (var stream = new MemoryStream(System.Text.Encoding.UTF8.GetBytes(content)))  
{  
 await blobClient.UploadAsync(stream, overwrite: true);  
}  
Console.WriteLine($"Текстовий blob '{blobName}' створений.");

b. Читання (Завантаження) Blob

  1. Завантажити у файл
string downloadFilePath = "path/to/save/file.txt";  
BlobClient blobClient = containerClient.GetBlobClient("uploaded-file");  

// Завантажити blob у файл  
await blobClient.DownloadToAsync(downloadFilePath);  
Console.WriteLine($"Blob завантажено в '{downloadFilePath}'.");

2. Прочитати вміст blob

BlobClient blobClient = containerClient.GetBlobClient("sample-text.txt");  
BlobDownloadInfo download = await blobClient.DownloadAsync();  

using (var reader = new StreamReader(download.Content))  
{  
 string content = await reader.ReadToEndAsync();  
 Console.WriteLine($"Вміст blob: {content}");  
}

c. Оновлення (Заміна) Blob

Щоб оновити blob, завантажте новий вміст з тим самим ім'ям blob.

string blobName = "sample-text.txt";  
BlobClient blobClient = containerClient.GetBlobClient(blobName);  

string updatedContent = "Оновлений вміст для Azure Blob Storage!";  
using (var stream = new MemoryStream(System.Text.Encoding.UTF8.GetBytes(updatedContent)))  
{  
 await blobClient.UploadAsync(stream, overwrite: true);  
}  
Console.WriteLine($"Blob '{blobName}' оновлено.");

d. Видалення Blob

Щоб видалити blob, використовуйте метод DeleteAsync.

string blobName = "sample-text.txt";  
BlobClient blobClient = containerClient.GetBlobClient(blobName);  

// Видалити blob  
await blobClient.DeleteAsync();  
Console.WriteLine($"Blob '{blobName}' видалено.");

4.

Список Blob у контейнері

Ви можете вивести всі blob у контейнері, використовуючи GetBlobsAsync.

await foreach (BlobItem blobItem in containerClient.GetBlobsAsync())  
{  
 Console.WriteLine($"Назва Blob: {blobItem.Name}");  
}

5. Повний приклад

Ось повна програма, яка демонструє операції CRUD:

using Azure.Storage.Blobs;  
using Azure.Storage.Blobs.Models;  
using System;  
using System.IO;  
using System.Text;  
using System.Threading.Tasks;  

class Program  
{  
 static async Task Main(string[] args)  
 {  
 string connectionString = "Your_Storage_Account_Connection_String";  
 string containerName = "sample-container";  
 string localFilePath = "path/to/your/file.txt";  
 // Створення BlobServiceClient  
 BlobServiceClient blobServiceClient = new BlobServiceClient(connectionString);  
 BlobContainerClient containerClient = blobServiceClient.GetBlobContainerClient(containerName);  
 // Створення контейнера, якщо він не існує  
 await containerClient.CreateIfNotExistsAsync();  
 Console.WriteLine($"Контейнер '{containerName}' створений або вже існує.");  
 // Завантаження файлу  
 string blobName = "uploaded-file";  
 BlobClient blobClient = containerClient.GetBlobClient(blobName);  
 await blobClient.UploadAsync(localFilePath, overwrite: true);  
 Console.WriteLine($"Файл '{localFilePath}' завантажено як blob '{blobName}'.");  
 // Читання вмісту blob  
 BlobDownloadInfo download = await blobClient.DownloadAsync();  
 using (var reader = new StreamReader(download.Content))  
 {  
 string content = await reader.ReadToEndAsync();  
 Console.WriteLine($"Вміст Blob: {content}");  
 }  
 // Оновлення blob  
 string updatedContent = "Оновлений вміст для Azure Blob Storage!";  
 using (var stream = new MemoryStream(Encoding.UTF8.GetBytes(updatedContent)))  
 {  
 await blobClient.UploadAsync(stream, overwrite: true);  
 }  
 Console.WriteLine($"Blob '{blobName}' оновлено.");  
 // Перелічення всіх blob у контейнері  
 Console.WriteLine("Список всіх blob:");  
 await foreach (BlobItem blobItem in containerClient.GetBlobsAsync())  
 {  
 Console.WriteLine($"- {blobItem.Name}");  
 }  
 // Видалення blob  
 await blobClient.DeleteAsync();  
 Console.WriteLine($"Blob '{blobName}' видалено.");  
 }  
}

6. Кращі практики

  1. Забезпечте безпеку рядка підключення: Зберігайте рядки підключення в безпеці, використовуючи змінні середовища або Azure Key Vault.
  2. Обробляйте винятки: Використовуйте блоки try-catch для обробки помилок, таких як проблеми з мережею або дозволами.
  3. Використовуйте асинхронні методи: Використовуйте асинхронні методи для кращої продуктивності.
  4. Реалізуйте політики збереження: Для чутливих даних використовуйте політики життєвого циклу Azure Blob Storage для управління видаленням або архівуванням blob.

Цей посібник охоплює основні операції CRUD для Azure Blob Storage, використовуючи C#. Ви можете розширити ці концепції відповідно до конкретних потреб вашого застосунку.

Перекладено з: CRUD Operations on Azure Blob Storage Using C#

Leave a Reply

Your email address will not be published. Required fields are marked *