Esta es la forma de hacerlo de la manera DotNetZip: DI dar fe de DotNetZip porque lo he utilizado y es, con mucho, la biblioteca de compresión más fácil para C# que he encontrado :)
Comprobar http://dotnetzip.codeplex.com/
http://dotnetzip.codeplex.com/wikipage?title=CS-Examples&referringTitle=Examples
Cree un archivo comprimido descargable dentro de ASP.NET. Este ejemplo crea un archivo comprimido dinámicamente dentro de un método de devolución de ASP.NET, luego descarga ese archivo zip al buscador solicitante a través de Response.OutputStream. No se crea archivo zip en el disco.
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();
}
Eso es genial ... bien merecedor de un voto positivo. ¿Sabes si hay alguna forma de conocer el tamaño comprimido en tiempo real? Quiero poder decirle a mis usuarios el tamaño de lo que descargarán si están comprimidos. – pearcewg
@pearcewg, creo que en este caso la solución depende de su requerimiento. Si sabe cuál será el contenido de los archivos, puede comprimir los archivos antes de la generación de la página y simplemente mostrar el tamaño de los archivos. Si el contenido de los archivos puede variar, entonces es una tarea no trivial. Mis pensamientos son: 1. poner información sobre el tamaño de los archivos comprimidos en la base de datos 2. mostrar el tamaño aproximado de los archivos comprimidos según las estadísticas de compresión. – bniwredyc
funcionan como un encanto. Gracias –