如何使用ICSharpCode.SharpZipLib.zip在zip文件中创建多个子文件夹----请忽略.这个问题已经



我正在从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文件。但确实对多人有效。

您的问题是,使用zipOutputStream在for each block中。

它适用于一个用户,但不适用于几个用户。

为using zipOutputStream块内的用户移动for each块。

最新更新