上传大ZipArchive-MemoryStream到Azure



TL;DR:是否有可能在压缩的同时将一个大的MemoryStream作为块上传到Azure ?

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

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

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

是否有可能从内存流中上传部分作为块到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的块发送数据到Azure存储服务,据我所知,它不会将old块保存到内存中。

相关内容

  • 没有找到相关文章

最新更新