BLOBストレージアカウント内の1つのコンテナーにファイルを保存しています。最初のコンテナのファイルを含むzipファイルを2番目のコンテナに作成する必要があります。
ワーカーロールとDotNetZipを使用して機能するソリューションがありますが、zipファイルのサイズが1 GBになる可能性があるため、オブジェクトなどを使用してすべての作業を進行中MemoryStream
に行うことが最善の方法ではないことが懸念されます。私の最大の懸念は、このプロセスが1日に数回発生する可能性があることを考えると、メモリ使用量とリソースの解放です。
以下は、ワーカーロールの基本的なプロセスを示す非常に簡略化されたコードです。
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);
}
}
誰かがより良いアプローチを提案できますか?