Download multiple files as Zip Archive File in ASP.Net using C# and VB.Net
Here Mudassar Ahmed Khan has explained with an example and attached sample code, how to download multiple files from server on single button click through GridView by creating Zip Archive File using DotNetZip Library in ASP.Net using C# and VB.Net
Referencing the DotNetZip LibraryYou will need to download the DotNetZip Library DLL using the Download Link provided below.Download DotNetZip Or your will find the DLL in the attached sample at the end of the article.Once you have the DLL you need to place the Ionic.Zip.Reduced.dll in the BIN Folder.VB.NetImports System.IOImports Ionic.ZipImports System.Collections.GenericDownloading Multiple Files selected in GridView as Zip Archive File using DotNetZipC#protected void DownloadFiles(object sender, EventArgs e){ using (ZipFile zip = new ZipFile()) { zip.AlternateEncodingUsage = ZipOption.AsNecessary; zip.AddDirectoryByName("Files"); foreach (GridViewRow row in GridView1.Rows) { if ((row.FindControl("chkSelect") as CheckBox).Checked) { string filePath = (row.FindControl("lblFilePath") as Label).Text; zip.AddFile(filePath, "Files"); } } Response.Clear(); Response.BufferOutput = false; string zipName = String.Format("Zip_{0}.zip", DateTime.Now.ToString("yyyy-MMM-dd-HHmmss")); Response.ContentType = "application/zip"; Response.AddHeader("content-disposition", "attachment; filename=" + zipName); zip.Save(Response.OutputStream); Response.End(); }} VB.NetProtected Sub DownloadFiles(sender As Object, e As EventArgs) Using zip As New ZipFile() zip.AlternateEncodingUsage = ZipOption.AsNecessary zip.AddDirectoryByName("Files") For Each row As GridViewRow In GridView1.Rows If TryCast(row.FindControl("chkSelect"), CheckBox).Checked Then Dim filePath As String = TryCast(row.FindControl("lblFilePath"), Label).Text zip.AddFile(filePath, "Files") End If Next Response.Clear() Response.BufferOutput = False Dim zipName As String = [String].Format("Zip_{0}.zip", DateTime.Now.ToString("yyyy-MMM-dd-HHmmss")) Response.ContentType = "application/zip" Response.AddHeader("content-disposition", "attachment; filename=" + zipName) zip.Save(Response.OutputStream) Response.[End]() End UsingEnd Sub
http://www.aspsnippets.com/Articles/Download-multiple-files-as-Zip-Archive-File-in-ASPNet-using-C-and-VBNet.aspx