Создайте Zip-файл в памяти из разных путей к файлам и загрузите его в C # - PullRequest
0 голосов
/ 28 июня 2018

Я пытался создать и загрузить zip-файл из другого места, используя ZipArchive class.

Файлы расположены по другому пути к файлу. Я хочу создать zip-файл в объекте c # в памяти, а затем загрузить его без сохранения файла zip в c # / MVC.

Я пытался так:

public void DownloadZipFromMultipleFile()
{
   using (var memoryStream = new MemoryStream())
   {
      using (var archive = new ZipArchive(memoryStream, ZipArchiveMode.Create, true))
      {
         archive.CreateEntryFromFile(Server.MapPath("~/Content/appStyle.css"), "myStyle.css");
         archive.CreateEntryFromFile(Server.MapPath("~/NewPath/myScript.js"), "script.js");
      }
   }

   //archive.Save(Response.OutputStream);
}

Я успешно добавил файлы в archive, но не смог загрузить файл в виде zip-файла.

1 Ответ

0 голосов
/ 28 июня 2018

Как предложено PapitoSh в разделе комментариев, я добавил несколько строк вместе с моими существующими кодами, и теперь он работает нормально.

public void DownloadZipFromMultipleFile()
{
   using (var memoryStream = new MemoryStream())
   {
      using (var archive = new ZipArchive(memoryStream, ZipArchiveMode.Create, true))
      {
         archive.CreateEntryFromFile(Server.MapPath("~/Content/appStyle.css"), "myStyle.css");
         archive.CreateEntryFromFile(Server.MapPath("~/NewPath/myScript.js"), "script.js");
      }

      byte[] bytesInStream = memoryStream.ToArray(); // simpler way of converting to array 
      memoryStream.Close(); 
      Response.Clear(); 
      Response.ContentType = "application/force-download"; 
      Response.AddHeader("content-disposition", "attachment; filename=name_you_file.zip"); 
      Response.BinaryWrite(bytesInStream); Response.End();
   }

   //archive.Save(Response.OutputStream);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...