Skip to content

Instantly share code, notes, and snippets.

@forenheith
Created February 3, 2021 18:58
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save forenheith/910b22ca833c1e3453b32e053d287f9f to your computer and use it in GitHub Desktop.
Save forenheith/910b22ca833c1e3453b32e053d287f9f to your computer and use it in GitHub Desktop.
` using (var outStream = new MemoryStream())
{
var zipOutputStream = new ZipOutputStream(outStream);
await outStream.FlushAsync(cancellationToken);
outStream.Seek(0, SeekOrigin.Begin);
zipOutputStream.SetLevel(CompressionMax);
foreach (var file in files)
{
using (var inStream = new MemoryStream())
{
await _fileStorageApi.ReadToStreamAsync(inStream, file.Location.ContainerName,
file.Location.FileName, cancellationToken);
var inBuffer = new byte[inStream.Length];
inStream.Seek(0, SeekOrigin.Begin);
var length = await inStream.ReadAsync(inBuffer, 0, inBuffer.Length, cancellationToken);
var entry = new ZipEntry(file.OriginalName)
{
DateTime = DateTime.Now, Size = inBuffer.Length
};
zipOutputStream.PutNextEntry(entry);
await zipOutputStream.WriteAsync(inBuffer, 0, length, cancellationToken);
}
}
outStream.Seek(0, SeekOrigin.Begin);
var outBuffer = new byte[outStream.Length];
await outStream.ReadAsync(outBuffer, 0, outBuffer.Length, cancellationToken);
zipOutputStream.Finish();
zipOutputStream.Close();
return outBuffer;` using (var outStream = new MemoryStream())
{
var zipOutputStream = new ZipOutputStream(outStream);
await outStream.FlushAsync(cancellationToken);
outStream.Seek(0, SeekOrigin.Begin);
zipOutputStream.SetLevel(CompressionMax);
foreach (var file in files)
{
using (var inStream = new MemoryStream())
{
await _fileStorageApi.ReadToStreamAsync(inStream, file.Location.ContainerName,
file.Location.FileName, cancellationToken);
var inBuffer = new byte[inStream.Length];
inStream.Seek(0, SeekOrigin.Begin);
var length = await inStream.ReadAsync(inBuffer, 0, inBuffer.Length, cancellationToken);
var entry = new ZipEntry(file.OriginalName)
{
DateTime = DateTime.Now, Size = inBuffer.Length
};
zipOutputStream.PutNextEntry(entry);
await zipOutputStream.WriteAsync(inBuffer, 0, length, cancellationToken);
}
}
outStream.Seek(0, SeekOrigin.Begin);
var outBuffer = new byte[outStream.Length];
await outStream.ReadAsync(outBuffer, 0, outBuffer.Length, cancellationToken);
zipOutputStream.Finish();
zipOutputStream.Close();
return outBuffer;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment