使用 UploadFromStreamAsync 方法上传 azure blob
Posted
技术标签:
【中文标题】使用 UploadFromStreamAsync 方法上传 azure blob【英文标题】:upload azure blob using UploadFromStreamAsync Method 【发布时间】:2018-12-29 13:44:59 【问题描述】:问题
我正在尝试生成 Pdf 并创建 MemoryStream 对象并尝试将该流上传到 azure Blob Storage。到目前为止,我已经尝试过下面的代码,但是 blob 没有上传到 azure,而且我使用 azure sdk 的流方法上传的那个 blob 的名称是什么
代码
var memoryStream = new MemoryStream(byteArray, 0, byteArray.Length);
var cred = new StorageCredentials("foo", "key");
var account = new CloudStorageAccount(cred, true);
var client = account.CreateCloudBlobClient();
var container = client.GetContainerReference("container");
CloudBlockBlob sourceBlob = container.GetBlockBlobReference("foo/bar");
var attachment = sourceBlob.UploadFromStreamAsync(memoryStream);
【问题讨论】:
首先突出的是在调用UploadFromStreamAsync
时缺少await
。
【参考方案1】:
正如@Kirk 所说,使用await sourceBlob.UploadFromStreamAsync(memoryStream);
而不是var attachment = sourceBlob.UploadFromStreamAsync(memoryStream);
否则您的代码将在上传完成之前退出。
注意你的方法应该改成public async Task methodname()
,你会看到VS显示的相关提示。
一些参考资料
Async and Await How and when to use async and-await请参阅container.GetBlockBlobReference("blobname");
,用于获取 blob 引用的字符串是上传的 blob 的名称。
【讨论】:
以上是关于使用 UploadFromStreamAsync 方法上传 azure blob的主要内容,如果未能解决你的问题,请参考以下文章
Azure 云存储 SDK UploadFromStreamAsync 不起作用
Azure 数据湖:将数据从 Blob 移动到 ADLS 时面临问题