Enviar un zip al vol amb C#

Si voleu generar un arxiu zip amb C# i enviar-lo per web probablement us trobareu amb que s’us genera corrupte o que funciona en els clients amb windows però no amb els de Linux.

Això es deu a que .NET envia unes línies de control, i ho fa de manera automàtica, per tant corrompran el final del contingut binari que esteu enviant.

Un codi que us funcionaria seria:

Response.Clear();
// Arxius grans
Response.BufferOutput = false;
Response.ContentType = "application/zip";
Response.AddHeader("content-disposition", "filename=" + filename);
using (ZipFile zip = new ZipFile())
{
    zip.ProvisionalAlternateEncoding = System.Text.Encoding.GetEncoding("iso-8859-2");
    zip.TempFileFolder = AppConfig.rutaArrelAplicacio + @"\tmp";
    zip.AddDirectory(AppConfig.rutaArrelAplicacio + @"\carpeta_a_comprimir");
    // Això envia l'arxiu comprimit a la sortida estandard
    zip.Save(Response.OutputStream);
}
// Tanquem la connexió de manera que .NET no enviarà res més
Response.Close();

Response.Close(); és qui finalitza l’enviament de dades al navegador.

Català-Catalunya English-USA Traduir a l'Anglès. Translate to English Compartir: La TafaneraIndependènciaCatosfera|FacebookTwitterFriend Feed|googleDeliciousDiggTechnoratiredditmixxyahoolivestumbleuponsimpy

Tags: ,

1.379 visualitzacions - versió en PDF

També us podria resultar interessant:

Comments are closed.