.net core5.0 ICSharpCode.SharpZipLib.Core stream 导出Zip

using ICSharpCode.SharpZipLib.Core;

  

 public FileResult ExportAll(int gradeId)
        {

            var zipObjects = _scoreImportService.ExportAll(gradeId);

            var outputMemoryStream = new MemoryStream();
            var zipStream = new ZipOutputStream(outputMemoryStream);

            zipStream.SetLevel(3);

            foreach (var item in zipObjects)
            {
                var data = item.XlsDataTable;
                var buffer = data.SaveToMemoryStream("学生成绩");

                var inputMemoryStream = new MemoryStream(buffer.ToArray());
                var zipEntry = new ZipEntry($"{item.Name}.xls");
                zipEntry.DateTime = DateTime.Now;

                zipStream.PutNextEntry(zipEntry);
                StreamUtils.Copy(inputMemoryStream, zipStream, new byte[4096]);
                zipStream.CloseEntry();
            }

            zipStream.IsStreamOwner = false;
            zipStream.Close();

            outputMemoryStream.Position = 0;

            //return outputMemoryStream.ToArray();


            var fileName = "全部";
            if (gradeId != -1)
            {
                fileName = gradeId + "届";
            }
            return File(outputMemoryStream, "application/zip;charset=UTF-8", fileName + "学生成绩单.zip");
        }

  

posted @ 2022-04-23 18:42  贾平凡  阅读(188)  评论(0)    收藏  举报