gpt4 book ai didi

azure - 如何使用 FileUpload 在 Azure Blob 中上传文件大小大于 1 GB 的 asp.net 文件

转载 作者:行者123 更新时间:2023-12-03 06:14:29 25 4
gpt4 key购买 nike

我能够在 ASP.NET WebForm 4.8 中上传文件。我已经更新了 webconfig 中的最大文件大小设置。将文件流式传输到 Azure 存储 blob 时遇到的问题。加载大于 1 GB 且小于 2 GB 的文件时,出现内存溢出异常。我提到小于 2 GB 是因为我知道 ASP.NET 无法加载大于 2 GB 的文件。

如果有人还可以提供何时使用 blobClient.OpenWrite() 与 blobClient.Upload() 的信息

最佳答案

How to Upload file in Azure Blob for file size greater than 1 GB in asp.net using FileUpload.

我使用以下代码,能够将 1.23GB 的文件上传到容器。

int blockSize = 4 * 1024 * 1024;
BlobServiceClient blbSvcClnt = new BlobServiceClient("ConnectionString");
BlobContainerClient contClnt = blbSvcClnt.GetBlobContainerClient("mycntr11");
BlockBlobClient blbClnt = contClnt.GetBlockBlobClient("MyFiles11.zip");
FileStream fstream = File.OpenRead("C:\\Tools\\MyFiles11.zip"); ArrayList blockIDArrayList = new ArrayList();
byte[] buffer;
var bytesLeft = (fstream.Length - fstream.Position);
while (bytesLeft > 0)
{
if (bytesLeft >= blockSize)
{
buffer = new byte[blockSize];
await fstream.ReadAsync(buffer, 0, blockSize);
}
else
{
buffer = new byte[bytesLeft];
await fstream.ReadAsync(buffer, 0, Convert.ToInt32(bytesLeft));
bytesLeft = (fstream.Length - fstream.Position);
}
using (var stream = new MemoryStream(buffer))
{
string blockID = Convert.ToBase64String(Encoding.UTF8.GetBytes(Guid.NewGuid().ToString()));
blockIDArrayList.Add(blockID);
await blbClnt.StageBlockAsync(blockID, stream);
}
bytesLeft = (fstream.Length - fstream.Position);
}
string[] blockIDArray = (string[])blockIDArrayList.ToArray(typeof(string));
await blbClnt.CommitBlockListAsync(blockIDArray);

1.23 GB 文件已成功上传到 Azure 容器。

enter image description here

本地文件。

enter image description here

When to use blobClient.OpenWrite() vs blobClient.Upload()

文件大小

  • blobClient.OpenWrite():这适用于较大的文件,当文件大小超过可用内存时。它允许您以较小的 block 上传文件,从而减少上传过程中的内存占用。
  • blobClient.Upload():这适用于可以轻松加载到内存中而不会造成内存限制的较小文件。

内存使用情况

  • blobClient.OpenWrite():由于这会以较小的 block 上传文件,因此可以最大限度地减少上传过程中的内存使用量。它在内存资源有限或上传非常大的文件时非常有用。

欲了解更多信息,请参阅MSDoc1MSDoc2 。如何使用 FileUpload 在 Azure Blob 中上传文件大小大于 1 GB 的文件。

关于azure - 如何使用 FileUpload 在 Azure Blob 中上传文件大小大于 1 GB 的 asp.net 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/76399694/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com