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

2 comentarios:

Anónimo dijo...

Que tal, me ayudo bastante pero fijate que me sale una excepcion que dice "no se pueden evaluar la expresion porque el codigo esta optimizado o existe un marco nativo en la parte superior de la pila de llamada", pero aun asi cre el zip bien ojala pueda ayudarme que hacer para que desaparezca esa excepcion

Adriana Segura dijo...

yo estoy con el mismo problema.
Podrías ayudarme?