Introduction
This article shows how to bind files in a GridView and how to download selected files in zip format.
Requirements
Dll Ionic.Zip.dll
ASPX Page:
<html xmlns="http://www.w3.org/1999/xhtml">
<head> <title>Download in zip format</title>
</head>
<body> <form id="form1" runat="server"> <div> <br /> <asp:Label ID="lbl_txt" runat="server" Font-Bold="true" ForeColor="Red" /> </div> <asp:GridView ID="gridview1" CellPadding="5" runat="server" AutoGenerateColumns="false"> <Columns> <asp:TemplateField> <ItemTemplate> <asp:CheckBox ID="chk_Select" runat="server" /> </ItemTemplate> </asp:TemplateField> <asp:BoundField DataField="Text" HeaderText="FileName" /> </Columns> <HeaderStyle BackColor="white" Font-Bold="true" ForeColor="White" /> </asp:GridView> <asp:Button ID="btn_Download" Text="Download " runat="server" OnClick="btnDownload_Click" /> </form>
</body>
</html>
CS Page:
protected void BindGridview()
{
string[] files_Path = Directory.GetFiles(Server.MapPath("~/files/"));
List<ListItem> files = new List<ListItem>();
foreach (string path in files_Path)
{
files.Add(new ListItem(Path.GetFileName(path)));
}
gridview1.DataSource = files;
gridview1.DataBind();
}
Call this function on pageload :
if (!IsPostBack)
{
BindGridview();
}}
Now write the following code for the Download button click:
This article shows how to bind files in a GridView and how to download selected files in zip format.
Requirements
Dll Ionic.Zip.dll
ASPX Page:
<html xmlns="http://www.w3.org/1999/xhtml">
<head> <title>Download in zip format</title>
</head>
<body> <form id="form1" runat="server"> <div> <br /> <asp:Label ID="lbl_txt" runat="server" Font-Bold="true" ForeColor="Red" /> </div> <asp:GridView ID="gridview1" CellPadding="5" runat="server" AutoGenerateColumns="false"> <Columns> <asp:TemplateField> <ItemTemplate> <asp:CheckBox ID="chk_Select" runat="server" /> </ItemTemplate> </asp:TemplateField> <asp:BoundField DataField="Text" HeaderText="FileName" /> </Columns> <HeaderStyle BackColor="white" Font-Bold="true" ForeColor="White" /> </asp:GridView> <asp:Button ID="btn_Download" Text="Download " runat="server" OnClick="btnDownload_Click" /> </form>
</body>
</html>
CS Page:
protected void BindGridview()
{
string[] files_Path = Directory.GetFiles(Server.MapPath("~/files/"));
List<ListItem> files = new List<ListItem>();
foreach (string path in files_Path)
{
files.Add(new ListItem(Path.GetFileName(path)));
}
gridview1.DataSource = files;
gridview1.DataBind();
}
Call this function on pageload :
if (!IsPostBack)
{
BindGridview();
}}
Now write the following code for the Download button click:
using (ZipFile zip = new ZipFile())
{
foreach (GridViewRow gr in gridview1.Rows)
{
CheckBox chk = (CheckBox)gr.FindControl("chkSelect");
if (chk.Checked)
{
string fileName = gr.Cells[1].Text;
string filePath = Server.MapPath("~/files/" + fileName);
zip.AddFile(filePath, "files");
}
}Response.Clear();
Response.AddHeader("Content-Disposition", "attachment; filename=DownloadedFile.zip");Response.ContentType = "application/zip";zip.Save(Response.OutputStream);Response.End();}
{
foreach (GridViewRow gr in gridview1.Rows)
{
CheckBox chk = (CheckBox)gr.FindControl("chkSelect");
if (chk.Checked)
{
string fileName = gr.Cells[1].Text;
string filePath = Server.MapPath("~/files/" + fileName);
zip.AddFile(filePath, "files");
}
}Response.Clear();
Response.AddHeader("Content-Disposition", "attachment; filename=DownloadedFile.zip");Response.ContentType = "application/zip";zip.Save(Response.OutputStream);Response.End();}