【发布时间】:2021-02-17 05:06:05
【问题描述】:
下载 blob 时我需要一个进度指示器。
上传时进度指示器已经工作。我在 BlobUploadOptions 中使用 Progresshandler。
BlobDownloadDetails 似乎有进度状态。但是,我不知道如何集成它以使其工作。
这是我的代码:
IKeyEncryptionKey key;
IKeyEncryptionKeyResolver keyResolver;
// Create the encryption options to be used for upload and download.
ClientSideEncryptionOptions encryptionOptions = new ClientSideEncryptionOptions(ClientSideEncryptionVersion.V1_0)
{
KeyEncryptionKey = key,
KeyResolver = keyResolver,
// string the storage client will use when calling IKeyEncryptionKey.WrapKey()
KeyWrapAlgorithm = "some algorithm name"
};
// Set the encryption options on the client options
BlobClientOptions options = new SpecializedBlobClientOptions() { ClientSideEncryption = encryptionOptions };
// Get your blob client with client-side encryption enabled.
// Client-side encryption options are passed from service to container clients, and container to blob clients.
// Attempting to construct a BlockBlobClient, PageBlobClient, or AppendBlobClient from a BlobContainerClient
// with client-side encryption options present will throw, as this functionality is only supported with BlobClient.
BlobClient blob = new BlobServiceClient(connectionString, options).GetBlobContainerClient("myContainer").GetBlobClient("myBlob");
BlobUploadOptions uploadOptions = new BlobUploadOptions();
uploadOptions.ProgressHandler = new Progress<long>(percent =>
{
progressbar.Maximum = 100;
progressbar.Value = Convert.ToInt32(percent * 100 / file.Length);
});
// Upload the encrypted contents to the blob.
blob.UploadAsync(content: stream, options: uploadOptions, cancellationToken: CancellationToken.None);
// Download and decrypt the encrypted contents from the blob.
MemoryStream outputStream = new MemoryStream();
blob.DownloadTo(outputStream);
【问题讨论】:
标签: c# .net azure azure-blob-storage azure-keyvault