Giới thiệu
Azurite emulator là một phần mềm mã nguồn mở giả lập các dịch vụ Azure Storage trên môi trường local. Bạn có thể kiểm tra các ứng dụng sử dụng Azure Blob, Queue Storage và Table Storage mà không cần kết nối với tài khoản Azure Storage trên cloud
Cài đặt
- Sử dụng Visual Studio 2022, Azurite đã được cài đặt sẵn.
- Sử dụng Visual Studio Code, bạn có thể cài đặt tiện ích mở rộng Azurite.
- Sử dụng npm
npm install -g azurite
- Sử dụng Docker Hub, bạn có thể chạy lệnh docker run -p 10000:10000 -p 10001:10001 -p 10002:10002 mcr.microsoft.com/azure-storage/azurite
Kết nối Azurite bằng Microsoft Azure Storage Explorer
Bạn có thể sử dụng Microsoft Azure Storage Explorer để xem và quản lý dữ liệu được lưu trữ trong Azurite. Để kết nối Azurite bằng Storage Explorer, bạn cần làm những bước sau đây
- Chạy Azurite trên máy local của bạn
- Mở Storage Explorer và chọn biểu tượng Connect
Upload file lên Azurite ở local
Các bước- Tạo SAS URL
- Upload fiel
- Download file
SAS là gì?
SAS là viết tắt của Shared Access Signature, là một chuỗi token được tạo ra bởi Azure Storage để cấp quyền truy cập tạm thời cho các dịch vụ Blob, Queue và Table. Bạn có thể sử dụng SAS để cho phép các ứng dụng hoặc người dùng khác truy cập vào các tài nguyên của bạn mà không cần chia sẻ khóa bí mật của bạn.
Tạo SAS URL để upload file
Tạo Console Application.dotnet add package Azure.Storage.Blobs
Truy cập vào Microsoft Azure Storage Explorer để lấy các thông tin: Account Name, Blob Endpoint, Primary Key
Thêm các thông tin sau:
var storageAccountName = "<account-name>";
var accessKey = "<Primary Key>";
var containerName = "blob";// The name of your container in Azurite
var sharedKeyCredential = new StorageSharedKeyCredential(storageAccountName, accessKey);
var blobHost = "127.0.0.1"; // Azurite default blob host
var blobPort = "10000"; // Azurite default blob port
var blobBaseUri = $"http://{blobHost}:{blobPort}/{storageAccountName}/";
var blobName = "cross-game.jpg"; // The name of your file in Azurite
Tạo SAS url để upload file
var sasUrl = GenerateSasUrl(storageAccountName, accessKey, blobBaseUri, containerName, blobName);
//----other code----
string GenerateSasUrl(string storageAccountName, string accessKey, string blobBaseUri, string containerName, string blobName)
{
var sharedKeyCredential = new StorageSharedKeyCredential(storageAccountName, accessKey);
var blobServiceClient = new BlobServiceClient(new Uri(blobBaseUri), sharedKeyCredential);
var containerClient = blobServiceClient.GetBlobContainerClient(containerName);
var blobClient = containerClient.GetBlobClient(blobName);
// Generate a SAS token for the blob
var blobSasBuilder = new BlobSasBuilder
{
BlobContainerName = containerName,
BlobName = blobName,
StartsOn = DateTimeOffset.UtcNow,
ExpiresOn = DateTimeOffset.UtcNow.AddDays(1) // Expire after one day
};
blobSasBuilder.SetPermissions(BlobSasPermissions.Write); // Write permission
var sasToken = blobSasBuilder.ToSasQueryParameters(sharedKeyCredential).ToString();
// Append the SAS token to the blob URL
var sasUrl = $"{blobClient.Uri}?{sasToken}";
Console.WriteLine($"SAS URL for {blobName}: {sasUrl}");
return sasUrl;
}
Để upload file từ SAS, bạn cần:
- Tạo một BlobClient từ SAS URL của file
- Đọc nội dung file và upload nó bằng phương thức UploadAsync hoặc Upload
async Task UploadFileAsync(string sasUrl, string blobName)
{
// Create a blob client from the SAS URL of the blob
var blobClient = new BlobClient(new Uri(sasUrl));
// Read the file content and upload it using UploadAsync or Upload
var fileName = "The name of the file to upload";
var content = File.ReadAllBytes(blobName);
var uploadBlobResponse = await blobClient.UploadAsync(new MemoryStream(content));
Console.WriteLine($"Upload blob {fileName} successfully", uploadBlobResponse.Value.ETag);
}
Tạo SAS download url:
void DownloadUrl(string storageAccountName, string accessKey, string blobBaseUri, string containerName, string blobName)
{
var blobServiceClient = new BlobServiceClient(new Uri(blobBaseUri), sharedKeyCredential);
var containerClient = blobServiceClient.GetBlobContainerClient(containerName);
var blobClient = containerClient.GetBlobClient(blobName);
// Generate a SAS token for the blob
var blobSasBuilder = new BlobSasBuilder
{
BlobContainerName = containerName,
BlobName = blobName,
StartsOn = DateTimeOffset.UtcNow,
ExpiresOn = DateTimeOffset.UtcNow.AddDays(1) // Expire after one day
};
blobSasBuilder.SetPermissions(BlobSasPermissions.Read); // Read permission
var sasToken = blobSasBuilder.ToSasQueryParameters(sharedKeyCredential).ToString();
// Append the SAS token to the blob URL
var downloadUrl = $"{blobClient.Uri}?{sasToken}";
Console.WriteLine($"Download URL for {blobName}: {downloadUrl}");
}
Hi vọng những đoạn code trên sẽ giúp bạn upload file dễ dàng bằng REST API. Happy Coding!
Nhận xét
Đăng nhận xét