SharpZipLib creates an archive with a string in memory and loads as an attachment

I use DotNetZip to create a zip archive with a string in memory and load it as an attachment with the following code.

byte[] formXml = UTF8Encoding.Default.GetBytes("<form><pkg>Test1</pkg></form>"); byte[] formHtml = UTF8Encoding.Default.GetBytes("<html><body>Test2</body></html>"); ZipFile zipFile = new ZipFile(); zipFile.AddEntry("Form.xml", formXml); zipFile.AddEntry("Form.html", formHtml); Response.ClearContent(); Response.ClearHeaders(); Response.AppendHeader("content-disposition", "attachment; filename=FormsPackage.zip"); zipFile.Save(Response.OutputStream); zipFile.Dispose(); 

Now I have a requirement to do the same with SharpZipLib. How can I do it? Does SharpZipLib support adding files as an array of bytes?

+6
source share
1 answer

Try below

 MemoryStream msFormXml = new MemoryStream(UTF8Encoding.Default.GetBytes("<form><pkg>Test1</pkg></form>")); MemoryStream msFormHTML = new MemoryStream(UTF8Encoding.Default.GetBytes("<html><body>Test2</body></html>")); MemoryStream outputMemStream = new MemoryStream(); ZipOutputStream zipStream = new ZipOutputStream(outputMemStream); zipStream.SetLevel(3); //0-9, 9 being the highest level of compression ZipEntry xmlEntry = new ZipEntry("Form.xml"); xmlEntry.DateTime = DateTime.Now; zipStream.PutNextEntry(xmlEntry); StreamUtils.Copy(msFormXml, zipStream, new byte[4096]); zipStream.CloseEntry(); ZipEntry htmlEntry = new ZipEntry("Form.html"); htmlEntry.DateTime = DateTime.Now; zipStream.PutNextEntry(htmlEntry); StreamUtils.Copy(msFormHTML, zipStream, new byte[4096]); zipStream.CloseEntry(); zipStream.IsStreamOwner = false; zipStream.Close(); outputMemStream.Position = 0; byte[] byteArray = outputMemStream.ToArray(); Response.Clear(); Response.AppendHeader("Content-Disposition", "attachment; filename=FormsPackage.zip"); Response.AppendHeader("Content-Length", byteArray.Length.ToString()); Response.ContentType = "application/octet-stream"; Response.BinaryWrite(byteArray); 
+14
source

Source: https://habr.com/ru/post/905790/


All Articles