gpt4 book ai didi

c# - 将 Big ZipArchive-MemoryStream 上传到 Azure

转载 作者:太空宇宙 更新时间:2023-11-03 23:08:35 25 4
gpt4 key购买 nike

TL;DR:是否可以在压缩时将大型 MemoryStream 作为 block 动态上传到 Azure?

我有一些文件保存到 MemoryStream 中,我将这些文件添加到另一个 MemoryStream 中的 ZipArchive 中。
我想使用此 MemoryStream 上传到 Azure-BlockBlob-Storage

blockBlob.UploadFromStream(zipMemoryStream);

到目前为止一切顺利。
现在的问题是,Zip-Archive 可能会变得大于 8GB,这是 MemoryStream 的问题。

是否可以将内存流中的部分作为 block 上传到 azure,并从流中删除这些字节?

或者是否有更好的方法来处理 zipArchive 和 azure?

对于压缩,我使用包 System.IO.Compression 中的类 ZipArchive

最诚挚的问候,
弗洛

最佳答案

这可能不完全是您正在寻找的内容,但您是否尝试过这样做:

var blob = container.GetBlockBlobReference("zipped.zip");
using (var stream = new ZipArchive(blob.OpenWrite(), ZipArchiveMode.Create))
{
var entry = stream.CreateEntry("entry1");
using (var es = entry.Open())
{
// Fill entry with data
}

// Other code
}

当您调用 CloudBlockBlobOpenWrite 时,它会创建一个 CloudBlobStream 实例,其工作方式与 MemoryStream 不同>。 CloudBlobStream 以 4MB block 的形式将数据发送到 Azure 存储服务,据我所知,它不会将旧 block 保存到内存中。

关于c# - 将 Big ZipArchive-MemoryStream 上传到 Azure,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40302243/

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