0

I have to prepare zip file and secure it with password. I'm using C# and SharpZipLib library. I have to return the created file using WebApi. The code below does not work - I can open file without providing password. What do I do wrong?

        [HttpGet]
        [Route("zip")]
        public async Task ZipFile()
        {
            Response.StatusCode = 200;
            Response.Headers.Add("ContentDisposition", $"attachment; filename=\"{Path.GetFileName("z.zip")}\"");
            Response.Headers.Add("ContentType", "application/octet-stream");
            compressDirectory("C:\\temp\\files");
        }

        
        private void compressDirectory(string DirectoryPath, int CompressionLevel = 9)
        {
            string[] filenames = Directory.GetFiles(DirectoryPath);
            using (ZipOutputStream OutputStream = new ZipOutputStream(Response.Body))
            {
                OutputStream.SetLevel(CompressionLevel);
                
                byte[] buffer = new byte[4096];

                for (int i=0; i<filenames.Length; i++)
                {

                    ZipEntry entry = new ZipEntry($"{i}\\" +Path.GetFileName(filenames[i]));
                    entry.DateTime = DateTime.Now;
                    OutputStream.PutNextEntry(entry);

                    using (FileStream fs = System.IO.File.OpenRead(filenames[i]))
                    {
                        int sourceBytes;

                        do
                        {
                            sourceBytes = fs.Read(buffer, 0, buffer.Length);
                            OutputStream.Write(buffer, 0, sourceBytes);
                        } while (sourceBytes > 0);
                    }
                }

                OutputStream.Password = "123";
                OutputStream.Finish();
                OutputStream.Close();
            }

        }
mirt
  • 202
  • 3
  • 11
  • Took a quick look at the documentation. Can you try removing the .Finish() and .Close() calls and see if it goes through? – Zee Mar 17 '22 at 23:00
  • @Zee I removed Finish and Close and nothing changed – mirt Mar 18 '22 at 08:55

0 Answers0