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

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

blockBlob.UploadFromStream(zipMemoryStream);


到目前为止,一切都很好。
现在的问题是,Zip存档可能会变得更大,然后达到8GB,这是MemoryStream的问题。

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

还是有更好的方法来处理zipArchive和azure?

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

最好的祝福,
浮点数

最佳答案

可能不是您要找的东西,但是您是否尝试执行以下操作:

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
}


当您调用OpenWriteCloudBlockBlob时,它将创建CloudBlobStream的实例,该实例的工作方式与MemoryStream不同。 CloudBlobStream以4MB的块将数据发送到Azure存储服务,据我记得它没有将old的块保存到内存中。

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

10-16 09:05