Upload Multiple Files and Then Create a Zip File

Introduction

This article explains how to upload multiple files and then create a Zip File.

Step 1. In today's application, we will use "Ionic.Zip.dll" and this will be available under the DotNetZip Library, you need to download it from this link: Download DotNetZip Developer's Kit.

After downloading it Unzip it so that the various libraries can be available for you.

Now create a new application in Visual Studio 2012.

Right-click on your application and then click on "Add reference".

Add reference

Step 2. Now in the Reference Manager Wizard click on the "Browse" button since we will add the reference from the Folder where we had stored the DotNetZip Library.

Browse

Browse to the "Ionic.Zip.dll" and then click on the "Add" button, this will add this DLL file to your project.

Add

Step 3. Now we will add a File Upload, a Button, and two labels to our Application.

<asp:FileUpload ID="fileupload" runat="server" class="multi" accept="gif|jpg|jpeg" maxlength="5" />
<asp:Button ID="createzip" Text="ZipFile" runat="server" OnClick="createzip_Click" />
<asp:Label ID="Label1" runat="server" ForeColor="#CC0000" />
<asp:Label ID="Label2" runat="server" ForeColor="#CC0000" />

After adding these, add a new folder to the application and name it "ZipFolder", this will be the folder where all the Zip Files will be stored.

Step 4. Now Add "System.IO" Assembly to your application and then add the following code to the aspx.cs file of your application.

HttpFileCollection filecollect = Request.Files;
for (int i = 0; i < filecollect.Count; i++)
{
    HttpPostedFile hpf = filecollect[i];
    if (hpf.ContentLength > 0)
    {
        hpf.SaveAs(Server.MapPath("ZipFolder") + "\\" +
          System.IO.Path.GetFileName(hpf.FileName));
        Label2.Text += " <br/> <b>File: </b>" + hpf.FileName +
          " <b>Size:</b> " + hpf.ContentLength + " <b>Type:</b> " +
          hpf.ContentType + "File Uploaded!";
    }
}
string zipfilepath = Server.MapPath("~/ZipFolder/");
string[] x = Directory.GetFiles(zipfilepath);
using (Ionic.Zip.ZipFile compress = new Ionic.Zip.ZipFile())
{
    string dateofcreation = DateTime.Now.ToString("y");
    dateofcreation = dateofcreation.Replace("/", "");
    compress.AddFiles(x, dateofcreation);
    compress.Save(Server.MapPath(dateofcreation + ".zip"));
    Label1.Text = "ZIP Created Successfully";
}
if (Label1.Text == "ZIP Created Successfully")
{
    Array.ForEach(Directory.GetFiles(zipfilepath),
      delegate(string deleteFile) { File.Delete(deleteFile); });
}

Here HttpFileCollection is used to retrieve all the files that are uploaded. When the images are uploaded it will add the file in the Zip Folder. For naming the file it will check the System Current Date and will add ".Zip" as its extension. After creating the Zip File it will give you a message as "Zip Created Successfully".

Output

On the Output Window first select the files by clicking on the "Browse" button, if you want to select more than one file then you need to click on the Browse button again.

Zip file

After selecting all the files, click on the "Zip" button, it will create the Zip File of all the files selected.

Zip