Skip to content

Instantly share code, notes, and snippets.

@piksel
Forked from forenheith/gist:910b22ca833c1e3453b32e053d287f9f
Last active February 3, 2021 19:19
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save piksel/1d2b3ed473aa8fc84525cc0e6240907c to your computer and use it in GitHub Desktop.
Save piksel/1d2b3ed473aa8fc84525cc0e6240907c 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