繁体   English   中英

如何使用 Blazor 将大文件上传到 WebAPI (C#) 并将其存储到 Azure Blob 存储中

[英]How to upload large file using Blazor to WebAPI (C#) and store it into Azure Blob storage

我需要使用 Blazor 上传一个大文件(最大 4GB)。请在您的回答中使用新版本的 Azure 存储 SDK(v12 Azure.Storage.Blobs NuGet package。)

就我而言,旧版本将不起作用 Azure 存储 SDK (v11 WindowsAzure.Storage NuGet package。)

要求`

  1. 在Blazor UI上传文件
  2. 通过 API 将该文件发送到服务器端
  3. 将该文件存储在服务器端的 Azure Blob 存储中。

我尝试了几种方法来做到这一点,但我没有成功。 有什么办法吗?

我试过的`

  1. 将文件本身 (2GB) 发送到 API 但出现 memory 异常(谷歌说不要这样做,不好的做法)

2.将文件切割成块并将其发送到 API,这是发送工作的第一部分,但我无法将它们全部收集为一个文件并将其存储在 Azure Blob 存储中(我将遇到 memory 问题)。

如果有办法将它存储在 Azure Blob 中,例如存储块的第一部分,然后更新该文件并依次将其他部分写入 Azure Blob 上的一个文件中,而不是服务 memory。最后,我将在 Blob 中有一个大文件.

如果有办法将其存储在 Azure Blob 中,例如存储块的第一部分,然后更新该文件并将其他部分顺序写入 Azure Blob 上的一个文件中,Blob 不服务 memory。

是的。 这就是Block Blobs在 Azure 存储中的工作方式。

基本上您需要做的是将数据块(在 Azure 存储中称为blocks )发送到您的 API 并使用BlockBlobClient.StageBlockAsync将这些块直接保存在 blob 存储中。 您无需将这些块保存在您的 API 中。您需要维护您在 Blazor 应用程序中上传的块的块 ID。

上传所有块(块)后,您需要将块 ID 发送到您的 API,并且需要从您的 API 调用BlockBlobClient.CommitBlockListAsync以告知 Azure Blob 存储将所有块组合在一起以创建一个 blob。

要了解有关通过上传块创建块 blob 的更多信息,您可能会发现这些链接很有用:

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM