上传到块Blob时使用UploadFromStreamAsync和DownloadToStreamAsync时如何对数据进行分块

时间:2019-03-19 20:28:20

标签: azure azure-storage-blobs

我刚刚开始了解Azure Blob存储。我遇到了多种上传和下载数据的方法。一件事使我困惑何时使用什么。

我主要对PutBlockAsyncPutBlockListAsyncUploadFromStreamAsync感兴趣。 据我了解,使用PutBlockAsync时,取决于用户将数据分成多个块,并确保每个块都在Azure块blob大小限制内。与每个上载的块相关联的ID。最后,所有ID都已提交。

使用UploadFromStreamAsync时,该如何工作?谁负责分块数据并上传。

为什么不将数据转换为Stream并始终使用UploadFromStreamAsync并避免两次提交?

1 个答案:

答案 0 :(得分:1)

您可以使用提琴手,观察使用UploadFromStreamAsync时会发生什么。

如果文件较大(大于256MB),例如500MB,则在后台调用Put BlockPut Block List api(在使用PutBlockAsync和{时也会被调用{1}}方法)

如果文件小于256MB,则文件(PutBlockListAsync)将在后台调用Put Blob api。

我使用UploadFromStreamAsync并上传一个大小为600MB的文件,然后打开该文件。

以下是关于异教徒的一些发现:

1。大文件被一一分成小文件(4MB),并在后台调用UploadFromStreamAsync api:

enter image description here

2。最后,Put Block api将被称为:

enter image description here