如何解决如何使用Azure BlobServiceClient监视异步上传的进度
这似乎应该很简单,但无论出于何种原因,这些选择对我来说都没有意义。 我正在实例化BlobServiceClient:
this.FileClient = new BlobServiceClient(new Uri(ENDPOINT),credentials);
然后我得到一个BlobContainerClient实例:
var container = this.FileClient.GetBlobContainerClient(this.GetContainerName(format));
然后我将其称为UploadBlobAsync:
await container.UploadBlobAsync(filePath,content);
我要做的就是监视上传进度。 如果您查找BlobClient类,则会发现有一个BlobUploadOptions类,该类具有IProgress类型的ProgressHandler属性,而这正是我要查找的...但是,似乎BlobContainerClient并没有以任何方式使用该类(为什么?)。另外,如果您查看BlobClient类的UploadAsync方法,则该方法有2个重载,除了类型为BlobUploadOptions .... 1的参数外,您可以指定将要上传的Blob放置在何处,另一个允许您可以指定要上传的内容...但是似乎没有过载,它可以让您同时指定要上传的内容和放置位置。我很困惑。
也...我正在使用BlobServiceClient的1个实例在应用程序的生命周期中。那合适吗?
解决方法
首先,您应该使用BlobClient
来监视上传进度。
对于您的问题:
,但是BlobContainerClient似乎没有以任何方式使用该类 (为什么?)
这是设计使然。当前,BlobContainerClient
不支持此参数。您可以在github page中提出功能请求。
此外,如果您查看BlobClient类的UploadAsync方法, 该方法有2个重载,但类型参数除外 BlobUploadOptions ......
我认为您指的是这两种方法:
UploadAsync(string path,BlobUploadOptions options,CancellationToken cancellationToken = default)
和
UploadAsync(Stream content,CancellationToken cancellationToken = default)
。
您应该知道何时使用它们,否则您可能不会感到困惑。
使用UploadAsync(string path,xxx)
时,您应为要上传的文件指定路径(如d:\myfolder\test.txt
)。
使用UploadAsync(Stream content,xxx)
时,意味着您已经获得了文件流。例如,您使用此方法var mystream = File.OpenRead("file path")
来获取文件内容的流,然后将该流传递给此方法UploadAsync(Stream content,xxx)
。
也...在整个生命周期内,我正在使用BlobServiceClient的1个实例 应用程序。那合适吗?
是的,没关系。
有关使用代码监视上传进度的用法,请参阅this blog以获得更多详细信息。
如果您还有其他问题,请告诉我。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。