【问题标题】:Azure Block blob "staging" area block expirationAzure Block blob“暂存”区域块过期
【发布时间】:2020-09-13 05:33:20
【问题描述】:

我已使用 Azure.Storage.Blobs SDK 将视频从 Xamarin.Forms 应用程序上传到 Azure Blob 存储。

一个要求是上传只能在应用程序处于活动状态时进行。采用的方法是使用块上传视频,这样我就可以在应用休眠/唤醒时处理部分上传和恢复上传 - 这部分已实现并正常工作。

我正在使用BlockBlobClient.StageBlockAsync,其中文档指出“StageBlockAsync 操作会创建一个新块,作为最终提交的块 blob 的“暂存区”的一部分”

来源:https://docs.microsoft.com/en-us/dotnet/api/azure.storage.blobs.specialized.blockblobclient.stageblockasync?view=azure-dotnet

现在这种方法对我来说效果很好,并给出了预期的结果,但是我似乎找不到任何关于如果未尝试提交操作,单个块是否会过期的信息。

场景:应用有 7 个区块要上传,3 个上传成功然后退出应用——当应用恢复时,它应该上传剩余的区块并提交。

如果应用一段时间没有打开,上传的区块会过期吗?

谢谢

【问题讨论】:

    标签: c# azure xamarin.forms azure-blob-storage


    【解决方案1】:

    现在这种方法对我来说效果很好,并且可以满足我的期望 结果,但是我似乎找不到任何提及是否 如果尚未提交操作,则单个块将过期 尝试过。

    如果未提交,单个块将在 7 天后过期。来自 REST API 文档link

    如果您在尚不存在的 blob 上调用 Put Block,则会创建一个新块 blob 创建时内容长度为 0。此 blob 由以下方式枚举 如果 include=uncommittedblob 选项是,则列出 Blob 操作 指定的。您上传的一个或多个块未提交 直到您在新 blob 上调用 Put Block List。 以这种方式创建的 blob 在服务器上维护一周;如果您还没有添加更多 在该时间段内阻止或提交块到 blob,然后 该 blob 已被垃圾回收。

    这里也提到了:https://docs.microsoft.com/en-us/dotnet/api/azure.storage.blobs.specialized.blockblobclient?view=azure-dotnet(最后一段)。

    【讨论】:

      【解决方案2】:

      一周,同意Stopped Contributing的回答,看代码也可以找到:

      namespace Azure.Storage.Blobs.Specialized 
      
      public class BlockBlobClient : BlobBaseClient
      

      在总结中有答案

      总结: ...如果你不提交任何块 此 blob、it 及其未提交的块将在 一周 之后被丢弃 最后一次成功的块上传。所有未提交的块也被丢弃 使用单个步骤创建同名的新 blob(而不是两步 阻止上传然后提交过程)。

      此外,您还可以使用以下内容(这有助于检查是否有任何块已过期和丢失)

      BlockList blocks = await blockBlob.GetBlockListAsync();
      

      【讨论】:

        猜你喜欢
        • 2020-07-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-08-02
        • 2018-10-14
        • 2017-01-27
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多