将 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
}
当您调用 CloudBlockBlob
的 OpenWrite
时,它会创建一个 CloudBlobStream
的实例,其工作方式与 MemoryStream
不同。 CloudBlobStream
以 4MB 块的形式将数据发送到 Azure 存储服务,据我所知它不会将 old
块保存到内存中。
TL;DR:是否可以在压缩时将大内存流作为块动态上传到 Azure?
我有文件保存到 MemoryStream
,我将这些文件添加到另一个 MemoryStream 中的 ZipArchive
。
我想使用
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
}
当您调用 CloudBlockBlob
的 OpenWrite
时,它会创建一个 CloudBlobStream
的实例,其工作方式与 MemoryStream
不同。 CloudBlobStream
以 4MB 块的形式将数据发送到 Azure 存储服务,据我所知它不会将 old
块保存到内存中。