viernes, 3 de diciembre de 2010

Crear un archivo ZIP dinamicamente en .Net C#

Quería presentarles un codigo que permite generar un archivo ZIP en memoria para luego enviarlo por el Request al Cliente.

Es un codigo bastante simple pero que puede sacarnos de apuros.

Utiliza la libreria NPOI, que la pueden descargar de: http://dotnetzip.codeplex.com/



private void responseZipFile(Object datos, object sender, EventArgs e)
{
using (StringWriter sw = new StringWriter())
{
using (MemoryStream ms = new MemoryStream())
{
Response.Clear();
Response.Buffer = true;
Response.ContentType = "aplication/zip";
Response.AddHeader("Content-Disposition", "attachment;filename=file.zip");
this.EnableViewState = false;

using (ZipFile zip = new ZipFile())
{
zip.AddEntry("Readme.txt", "stringContent1");
zip.AddEntry("readings/Data.csv", "stringContent2");
zip.AddEntry("readings/Index.xml", "stringContent3");
zip.Save(ms);
}

HttpContext.Current.Response.BinaryWrite(ms.ToArray());
HttpContext.Current.Response.End();
}
}
}
Espero les sea de utilidad.
Saludos