【问题标题】:How is the data chunked when using UploadFromStreamAsync and DownloadToStreamAsync when uploading to block blob上传到块 blob 时使用 UploadFromStreamAsync 和 DownloadToStreamAsync 时数据如何分块
【发布时间】:2019-08-10 11:31:45
【问题描述】:

我刚开始学习 Azure blob 存储。我遇到了各种上传和下载数据的方法。一件事让我不知道什么时候使用什么。

我主要对PutBlockAsync 以及PutBlockListAsyncUploadFromStreamAsync 感兴趣。 据我了解,在使用 PutBlockAsync 时,用户可以将数据分成块并确保每个块都在 Azure 块 blob 大小限制内。每个上传的块都有一个 id。最后,所有的 id 都被提交。

使用 UploadFromStreamAsync 时,它是如何工作的?谁处理数据分块和上传。

为什么不把数据转成Stream,一直使用UploadFromStreamAsync,避免两次commit?

【问题讨论】:

    标签: azure azure-blob-storage


    【解决方案1】:

    你可以使用fiddler,观察使用UploadFromStreamAsync时会发生什么。

    如果文件比较大(超过256MB),比如500MB,后台调用Put BlockPut Block List接口(使用PutBlockAsyncPutBlockListAsync方法时也会调用)

    如果文件小于 256MB,那么它(UploadFromStreamAsync) 会在后台调用Put Blob api。

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

    以下是 fidder 的一些发现:

    1.大文件一一分解成小文件(4MB),后台调用Put Blockapi:

    2.最后会调用Put Block List api:

    【讨论】:

    • 感谢您的详细回答。
    猜你喜欢
    • 2021-11-10
    • 2018-12-29
    • 2020-03-04
    • 1970-01-01
    • 2016-04-05
    • 1970-01-01
    • 2013-01-31
    • 2020-01-14
    • 2012-02-18
    相关资源
    最近更新 更多