将 Big ZipArchive-MemoryStream 上传到 Azure

Upload Big ZipArchive-MemoryStream to Azure

TL;DR:是否可以在压缩时将大内存流作为块动态上传到 Azure?

我有文件保存到 MemoryStream,我将这些文件添加到另一个 MemoryStream 中的 ZipArchive
我想使用

将此 MemoryStream 上传到 Azure-BlockBlob-Storage
blockBlob.UploadFromStream(zipMemoryStream);

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

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

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

为了压缩,我正在使用包 System.IO.Compression

中的 class 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 块的形式将数据发送到 Azure 存储服务,据我所知它不会将 old 块保存到内存中。