This Example Explains How To Download Multiple Files As Zip File Archive From Server In Asp.Net.
I have placed one CheckBoxList on asp.net page to Display Files From Server And One button to Download Zip File Archives.
I have used DotNetZip Library to Create Zip File from selected file(s), Add Ionic.Zip.dll in Bin folder in application root.
HTML SOURCE OF PAGE
C# CODE
VB.NET
I have placed one CheckBoxList on asp.net page to Display Files From Server And One button to Download Zip File Archives.
I have used DotNetZip Library to Create Zip File from selected file(s), Add Ionic.Zip.dll in Bin folder in application root.
HTML SOURCE OF PAGE
1: <form id="form1" runat="server">
2: <div>
3: <asp:CheckBoxList ID="checkBoxList" runat="server"/>
4:
5: <asp:Button ID="btnDownload" runat="server"
6: onclick="btnDownload_Click"
7: Text="Download Files" />
8: </div>
9: </form>
C# CODE
using System;
using System.Web.UI.WebControls;
using System.IO;
using Ionic.Zip;
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
DirectoryInfo directory = new DirectoryInfo(Server.MapPath("~/csharpdotnetfreak.blogspot.com"));
FileInfo[] filesInFolder = directory.GetFiles("*.*", SearchOption.AllDirectories);
foreach (FileInfo fileInfo in filesInFolder)
{
checkBoxList.Items.Add(fileInfo.Name);
}
}
}
protected void btnDownload_Click(object sender, EventArgs e)
{
ZipFile multipleFiles = new ZipFile();
Response.AddHeader("Content-Disposition", "attachment; filename=DownloadedFile.zip");
Response.ContentType = "application/zip";
foreach (ListItem fileName in checkBoxList.Items)
{
if (fileName.Selected)
{
string filePath = Server.MapPath("~/csharpdotnetfreak.blogspot.com" + fileName.Value);
multipleFiles.AddFile(filePath,string.Empty);
}
}
multipleFiles.Save(Response.OutputStream);
}
}VB.NET
Imports System.Web.UI.WebControls
Imports System.IO
Imports Ionic.Zip
Public Partial Class _Default
Inherits System.Web.UI.Page
Protected Sub Page_Load(sender As Object, e As EventArgs)
If Not IsPostBack Then
Dim directory As New DirectoryInfo(Server.MapPath("~/csharpdotnetfreak.blogspot.com"))
Dim filesInFolder As FileInfo() = directory.GetFiles("*.*", SearchOption.AllDirectories)
For Each fileInfo As FileInfo In filesInFolder
checkBoxList.Items.Add(fileInfo.Name)
Next
End If
End Sub
Protected Sub btnDownload_Click(sender As Object, e As EventArgs)
Dim multipleFiles As New ZipFile()
Response.AddHeader("Content-Disposition", "attachment; filename=DownloadedFile.zip")
Response.ContentType = "application/zip"
For Each fileName As ListItem In checkBoxList.Items
If fileName.Selected Then
Dim filePath As String = Server.MapPath("~/csharpdotnetfreak.blogspot.com" & fileName.Value)
multipleFiles.AddFile(filePath, String.Empty)
End If
Next
multipleFiles.Save(Response.OutputStream)
End Sub
End Class
If you like this post than join us or share


1 comments:
very good code
Post a Comment