Как я могу создать несколько подпапок внутри zip-файла с помощью ICSharpCode.SharpZipLib.Zip ---- пожалуйста, не обращайте внимания .. эта проблема была решена - PullRequest
0 голосов
/ 01 августа 2020

Я загружаю файлы из контейнера Azure blob. Мой код работает нормально, если я создаю только один каталог, но если я попытался создать несколько каталогов, zip-файл будет поврежден.

   var users = new List<long>();
                   users .Add(1);
                   users .Add(2);
                   users .Add(3);    
   foreach (var user in users)
   using (var zipOutputStream = new ZipOutputStream(Response.OutputStream))
               {
   
                   foreach (CloudBlockBlob item in container.ListBlobs(prefix: blobNamePrefix, useFlatBlobListing: true))
                   {
                       zipOutputStream.SetLevel(0);
                       var blob = container.GetBlockBlobReference(item.Name);
                       var entry = new ZipEntry(item.Name);
                       zipOutputStream.PutNextEntry(entry);
                       blob.DownloadToStream(zipOutputStream);
                   }
                   zipOutputStream.Finish();
                   zipOutputStream.Close();
               }
       
               Response.BufferOutput = false;
               Response.AddHeader("Content-Disposition", "attachment; filename=" + "zipFileName.zip");
               Response.ContentType = "application/octet-stream";
               Response.Flush();
               Response.End();
   }

если я использую только одного пользователя, тогда он создает новую папку внутри zip-файла и добавьте в него весь пользовательский файл blob. но сработал для нескольких.

1 Ответ

1 голос
/ 01 августа 2020

Ваша проблема в том, что использование zipOutputStream находится внутри для каждого блока для пользователей.

Это будет работать для одного пользователя, но не для нескольких.

Переместите для каждого блока для пользователей внутри блока using zipOutputStream.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...