我將文件存儲在blob存儲帳戶中的一個容器中。我需要在包含第一個容器中的文件的第二個容器中創建一個zip文件。在azure blob存儲中原位創建zip文件
我有一個解決方案,使用工作者角色和DotNetZip工作,但因爲zip文件可能最終大小爲1GB,我擔心使用MemoryStream
對象等進行所有工作進程,並不是最好的方法做這件事。考慮到這個過程可能每天發生幾次,我最關心的是內存使用和釋放資源。
下面是一些非常剝離下來的代碼顯示基本的過程中,工人的角色:
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);
}
}
有人能提出一個更好的辦法嗎?
使用拉丁文+1。 ;) – TrueWill 2011-12-27 05:20:47
是的,雲服務webrole/workrole中的內存,CPU等資源使用情況總是令人擔憂。值得考慮。 +1 – 2014-04-24 09:04:25