Мне трудно понять, как загрузить большой двоичный объект из хранилища Azure, используя. net и сгенерированный токен подписи общего доступа.
Прежде всего, большинство руководств, которые я мог find используют пакет Microsoft.Azure.Management.Storage
nuget, который устарел. Вместо этого я использую новейший пакет Azure.Storage.Blobs
.
Пока у меня есть следующий код. Я не знаю, что делать с сгенерированным токеном SAS. Как мне скачать оттуда BLOB-объект?
[HttpGet]
public async Task<IActionResult> Download([FromQuery] string blobUri)
{
BlobServiceClient blobServiceClient = new BlobServiceClient(this.configuration.GetConnectionString("StorageAccount"));
// Create a SAS token that's valid for one hour.
BlobSasBuilder sasBuilder = new BlobSasBuilder()
{
BlobContainerName = "my container name",
BlobName = blobUri,
Resource = "b",
StartsOn = DateTimeOffset.UtcNow,
ExpiresOn = DateTimeOffset.UtcNow.AddHours(1)
};
// Specify read permissions for the SAS.
sasBuilder.SetPermissions(BlobSasPermissions.Read);
// Use the key to get the SAS token.
var sasToken = sasBuilder.ToSasQueryParameters(new Azure.Storage.StorageSharedKeyCredential("my account name", "my account key"));
BlobClient blob = blobServiceClient.GetBlobContainerClient("my container name").GetBlobClient($"{blobUri}");
await using (MemoryStream memoryStream = new MemoryStream())
{
await blob.DownloadToAsync(memoryStream);
return File(memoryStream, "file");
}
}