我有下面的代码来模拟我尝试使用SharpZipLib执行的操作。当'i'的限制很低时,生成的zip文件运行良好。但由于'i'倾向于高值,例如100,生成的zip文件已损坏。当我修复它时,它打开没关系。我正在制造什么错误。谢谢。
using(MemoryStream memoryStream = new MemoryStream())
using (ZipOutputStream zipOutputStream = new ZipOutputStream(memoryStream))
{
zipOutputStream.SetLevel(3);
for (int i = 1; i < 10; i++)
{
ZipEntry zipEntry = new ZipEntry("Test" + i.ToString() + ".xlsx");
zipEntry.DateTime = DateTime.Now;
zipOutputStream.PutNextEntry(zipEntry);
using (Stream inputStream = File.OpenRead(@templatePath))
{
StreamUtils.Copy(inputStream, zipOutputStream,
new byte[inputStream.Length]);
inputStream.Close();
zipOutputStream.CloseEntry();
}
}
zipOutputStream.IsStreamOwner = false;
zipOutputStream.Close();
memoryStream.Position = 0;
WorkbookUtil.StreamFileToBrowser("Report.Zip", memoryStream.GetBuffer());
}
WorkbookUtil.StreamFileToBrowser是我将文件下载到用户浏览器的静态方法
这是下载到浏览器的方法
public static void StreamFileToBrowser(string sFileName, byte[] fileBytes)
{
System.Web.HttpContext context = System.Web.HttpContext.Current;
context.Response.Clear();
context.Response.ClearHeaders();
context.Response.ClearContent();
context.Response.AppendHeader("content-length", fileBytes.Length.ToString());
context.Response.ContentType = GetMimeTypeByFileName("application/zip");
context.Response.AppendHeader("content-disposition", "attachment; filename=" + sFileName);
context.Response.BinaryWrite(fileBytes);
context.ApplicationInstance.CompleteRequest();
}