public async Task <string> ZipS3Files(FilesToZip filesToZip) { var downloadKey = GetNewDownloadKey; using (var zipStream = new MemoryStream()) { using (var archive = new ZipArchive(zipStream, ZipArchiveMode.Create, true)) { foreach (var key in filesToZip.FileKeys) { using (var objectResponse = await s3Client.GetObjectAsync(filesToZip.BucketNameFrom, key)) { var readmeEntry = archive.CreateEntry(Path.GetFileName(key)); using (var entryStream = readmeEntry.Open()) { await objectResponse.ResponseStream.CopyToAsync(entryStream); } } } } using (var ut = new TransferUtility(s3Client)) { await ut.UploadAsync(zipStream, filesToZip.BucketToZip, downloadKey); } } return(downloadKey); }
public async Task <string> StreamZippedS3Files(FilesToZip filesToZip) { var base64 = string.Empty; using (var zipStream = new MemoryStream()) { using (var archive = new ZipArchive(zipStream, ZipArchiveMode.Create, true)) { foreach (var key in filesToZip.FileKeys) { using (var objectResponse = await s3Client.GetObjectAsync(filesToZip.BucketNameFrom, key)) { var readmeEntry = archive.CreateEntry(Path.GetFileName(key)); using (var entryStream = readmeEntry.Open()) { await objectResponse.ResponseStream.CopyToAsync(entryStream); } } } } base64 = Convert.ToBase64String(zipStream.ToArray()); } return(base64); }