Вот как это сделать способом DotNetZip: я ручаюсь за DotNetZip, потому что я его использовал, и это, безусловно, самая простая библиотека сжатия для C #, с которой я сталкивался:)
Проверка http://dotnetzip.codeplex.com/
http://dotnetzip.codeplex.com/wikipage?title=CS-Examples&referringTitle=Examples
Создание загружаемого почтового индекса в ASP.NET.В этом примере динамически создается zip-файл в методе обратной передачи ASP.NET, а затем загружается этот zip-файл в запрашивающий браузер через Response.OutputStream.На диске никогда не создается zip-архив.
public void btnGo_Click (Object sender, EventArgs e)
{
Response.Clear();
Response.BufferOutput= false; // for large files
String ReadmeText= "This is a zip file dynamically generated at " + System.DateTime.Now.ToString("G");
string filename = System.IO.Path.GetFileName(ListOfFiles.SelectedItem.Text) + ".zip";
Response.ContentType = "application/zip";
Response.AddHeader("content-disposition", "filename=" + filename);
using (ZipFile zip = new ZipFile())
{
zip.AddFile(ListOfFiles.SelectedItem.Text, "files");
zip.AddEntry("Readme.txt", "", ReadmeText);
zip.Save(Response.OutputStream);
}
Response.Close();
}