In principle, the user should be able to click on one link and upload multiple PDF files. But Catch - I cannot create files on the server or anywhere. Everything must be remembered.
I managed to create a memory stream and Response.Flush () in pdf format, but how to zip multiple memory streams without creating files.
Here is my code:
Response.ContentType = "application/zip";
Response.AppendHeader("content-disposition", "attachment; filename=\"Download.zip\"");
Response.CacheControl = "Private";
Response.Cache.SetExpires(DateTime.Now.AddMinutes(3));
byte[] abyBuffer = new byte[4096];
ZipOutputStream outStream = new ZipOutputStream(Response.OutputStream);
outStream.SetLevel(3);
#region Repeat for each Memory Stream
MemoryStream fStream = CreateClassroomRoster();
ZipEntry objZipEntry = new ZipEntry(ZipEntry.CleanName("ClassroomRoster.pdf"));
objZipEntry.DateTime = DateTime.Now;
objZipEntry.Size = fStream.Length;
outStream.PutNextEntry(objZipEntry);
int count = fStream.Read(abyBuffer, 0, abyBuffer.Length);
while (count > 0)
{
outStream.Write(abyBuffer, 0, count);
count = fStream.Read(abyBuffer, 0, abyBuffer.Length);
if (!Response.IsClientConnected)
{
break;
}
Response.Flush();
}
fStream.Close();
#endregion
outStream.Finish();
outStream.Close();
Response.Flush();
Response.End();
This creates a zip file but there is no file inside it
I use using iTextSharp.text - to create pdf using ICSharpCode.SharpZipLib.Zip - for Zipping
Thank Kavita p>
source
share