The following example will return the byte[]
data of a zipped file containing the files provided to it, without needing access to the file system.
public static byte[] ZipFiles(Dictionary<string, byte[]> files)
{
using (MemoryStream ms = new MemoryStream())
{
using (ZipArchive archive = new ZipArchive(ms, ZipArchiveMode.Update))
{
foreach (var file in files)
{
ZipArchiveEntry orderEntry = archive.CreateEntry(file.Key); //create a file with this name
using (BinaryWriter writer = new BinaryWriter(orderEntry.Open()))
{
writer.Write(file.Value); //write the binary data
}
}
}
//ZipArchive must be disposed before the MemoryStream has data
return ms.ToArray();
}
}