如何从CloudBlockBlob.UploadFromFileAsync获取上传进度?

时间:2013-12-17 14:36:04

标签: .net azure azure-storage azure-storage-blobs

我正在使用CloudBlockBlob对象和UploadFromFileAsync方法将文件上传到blob存储。完成后,我将调用一个服务,然后告诉几台计算机获取我上传的文件。但是,我注意到当我运行它然后去检查Azure门户中的文件时,它出现时会有一些滞后。我不知道这是不是因为门户网站需要一段时间来反映这一点,或者文件实际上还没有。这引出了我真正的问题,我可以使用这种方法检查文件的进度吗?将它提供给进度条也很好。

4 个答案:

答案 0 :(得分:1)

在TPL中,报告进度的方式是通过IProgress<T>界面。报告进度的异步方法预计会提供接受此接口实例的重载。

由于该方法没有过载,并且API没有公开类似的内容,我只能得出结论,不支持进度报告。

方法返回的Task本身会指示操作何时完成,您应该等待。

答案 1 :(得分:1)

答案 2 :(得分:0)

再看一下,我注意到该方法返回一个任务,我可以检查完成状态。但是,这并没有给我任何进展的迹象。

答案 3 :(得分:0)

谁还在寻找这个东西。

以下是通过progressHandler获取上传进度的示例:

CancellationToken cancellationToken = new CancellationToken();
IProgress<StorageProgress> progressHandler = new Progress<StorageProgress>(
    progress => Console.WriteLine("Progress: {0} bytes transferred", progress.BytesTransferred)
    );

await blob.UploadFromStreamAsync(
    srcStream,
    default(AccessCondition),
    default(BlobRequestOptions),
    default(OperationContext),
    progressHandler,
    cancellationToken
    );

来自 https://docs.microsoft.com/en-us/dotnet/api/microsoft.azure.storage.core.util.storageprogress?view=azure-dotnet