Можно ли вообще заархивировать более 65535 динамических файлов с помощью sharpziplib ?
Я пытаюсь zip 100 000 динамических файлов, и в консольном приложении я могу сделать это без каких-либо проблем, но в веб-приложении кажется, что это в некотором роде невозможно для моего текущего уровня знаний. Я хотел бы знать, действительно ли это невозможно ?
До сих пор zip, сделанный на webapp, который больше, чем 65535 файлов, выходит из строя при открытии.
Что я уже пробовал:
Я сделал это тестовое приложение, но не смог найти ответа.
приставка
static void Main(string[] args) { using (ZipOutputStream zipOutputStream = new ZipOutputStream(File.Create("Test.zip"))) { zipOutputStream.SetLevel(0); for (long i = 1; i < 100000; i++) { string txt = "File " + i.ToString(); byte[] bytes = System.Text.Encoding.UTF8.GetBytes(txt); using (MemoryStream ms = new MemoryStream(bytes)) { ZipEntry entry = new ZipEntry(ZipEntry.CleanName(i.ToString() + ".txt")) { DateTime = DateTime.Now, CompressionMethod = CompressionMethod.Stored, Size = bytes.Length }; zipOutputStream.PutNextEntry(entry); byte[] buffer = new byte[1024]; ICSharpCode.SharpZipLib.Core.StreamUtils.Copy(ms, zipOutputStream, buffer); Console.WriteLine(i.ToString()); } } } }
сеть
protected void Page_Load(object sender, EventArgs e) { Response.Clear(); Response.ClearHeaders(); Response.Cache.SetCacheability(HttpCacheability.NoCache); Response.ContentType = "application/octet-stream"; Response.AddHeader("Content-Disposition", "attachment; filename=" + "file.zip"); using (ZipOutputStream zipOutputStream = new ZipOutputStream(Response.OutputStream)) { zipOutputStream.SetLevel(0); for (long i = 1; i < 100000; i++) { string txt = "File " + i.ToString(); byte[] bytes = System.Text.Encoding.UTF8.GetBytes(txt); using (MemoryStream ms = new MemoryStream(bytes)) { ZipEntry entry = new ZipEntry(ZipEntry.CleanName(i.ToString() + ".txt")) { DateTime = DateTime.Now, CompressionMethod = CompressionMethod.Stored, Size = bytes.Length }; zipOutputStream.PutNextEntry(entry); byte[] buffer = new byte[1024]; ICSharpCode.SharpZipLib.Core.StreamUtils.Copy(ms, zipOutputStream, buffer); Response.Flush(); } } } Response.Flush(); Response.End(); }