我将文件存储在 Blob 存储帐户内的一个容器中。我需要在第二个容器中创建一个 zip 文件,其中包含第一个容器中的文件。
我有一个使用辅助角色和 DotNetZip 工作的解决方案,但由于 zip 文件的大小最终可能达到 1GB,我担心在进程中完成所有工作,使用MemoryStream
对象等并不是执行此操作的最佳方法。我最关心的是内存使用和释放资源,因为这个过程每天可能会发生几次。
下面是一些very显示辅助角色基本流程的精简代码:
using (ZipFile zipFile = new ZipFile())
{
foreach (var uri in uriCollection)
{
var blob = new CloudBlob(uri);
byte[] fileBytes = blob.DownloadByteArray();
using (var fileStream = new MemoryStream(fileBytes))
{
fileStream.Seek(0, SeekOrigin.Begin);
byte[] bytes = CryptoHelp.EncryptAsBytes(fileStream, "password", null);
zipFile.AddEntry("entry name", bytes);
}
}
using (var zipStream = new MemoryStream())
{
zipFile.Save(zipStream);
zipStream.Seek(0, SeekOrigin.Begin);
var blobRef = ContainerDirectory.GetBlobReference("output uri");
blobRef.UploadFromStream(zipStream);
}
}
有人可以建议更好的方法吗?
在撰写此问题时,我不知道 Azure 中提供了 LocalStorage 选项。我能够将文件单独写入此文件并在 LocalStorage 中使用它们,然后将它们写回 blob 存储。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)