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.
![]() ![]() | Compartir: ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |