在内存中创建ZipArchive然后下载到客户端

时间:2016-01-26 04:59:31

标签: c# http zip

我已经阅读了几篇关于此的博文和问题,但我无法理解这一点。它只下载了一个<2KB的损坏的ZIP存档。我觉得自己错过了将PDF文件流式传输到Zip存档的简单方法吗?

       using (var outStream = new MemoryStream())
    {
        using (ZipArchive archive = new ZipArchive(outStream, ZipArchiveMode.Create, true))
        {
            foreach (string Item in Items)
            {
                ReportParameter[] prms = new ReportParameter[1];
                prms[0] = new ReportParameter("Item", Item, false);

                rv.ServerReport.SetParameters(prms);

                rv.ShowParameterPrompts = false;
                rv.ServerReport.Refresh();

                byte[] bytes = rv.ServerReport.Render("PDF", null, out mimeType, out encoding, out extension, out streamids, out warnings);

                string fileName = Item + ".pdf";
                var fileInArchive = archive.CreateEntry(fileName);
                using (var entryStream = fileInArchive.Open())
                using (var fileToCompressStream = new MemoryStream(bytes))
                {
                    fileToCompressStream.CopyTo(entryStream);
                }
            }
        }
        outStream.Position = 0;
        Response.ClearContent();
        Response.ClearHeaders();
        Response.AppendHeader("content-disposition", "attachment; filename=PDFReports_" + DateTime.Now.ToString("yyyyMMddhhmmss") + ".zip");
        Response.Write(outStream);
    }

0 个答案:

没有答案