【问题标题】:Upload Big ZipArchive-MemoryStream to Azure将 Big ZipArchive-MemoryStream 上传到 Azure
【发布时间】:2016-10-28 09:36:20
【问题描述】:

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

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

blockBlob.UploadFromStream(zipMemoryStream);

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

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

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

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

最好的问候,
弗洛尔

【问题讨论】:

  • 我假设你使用 Block Blob?
  • 是的,我正在使用块块 :)
  • 你使用什么类进行压缩?我相信我知道如何解决这个问题。请出示您的代码。
  • 我编辑了我的问题,我没有太多用于压缩和上传的代码,正如我所说,我在 MemoryStreams 中提供了数据,还有一个负责 ZipArchive 的 MemoryStream

标签: c# azure stream zip memorystream


【解决方案1】:

这可能不是您想要的,但您是否尝试过这样做:

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
}

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

【讨论】:

  • 我想这正是我要找的,我会尝试一下,并给你一个回应,但我会接受你,非常感谢你的快速回答
猜你喜欢
  • 2015-06-22
  • 2013-02-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-09-24
相关资源
最近更新 更多