Refer this code
HTML
<form id="form1" runat="server">
<div>
<asp:FileUpload ID="FileUpload1" runat="server" />
<asp:Button Text="Upload" OnClick="Upload" ID="btnUpload" runat="server" />
<hr />
<asp:GridView ID="GridView1" runat="server" HeaderStyle-BackColor="#3AC0F2" HeaderStyle-ForeColor="White"
RowStyle-BackColor="#A1DCF2" AlternatingRowStyle-BackColor="White" AlternatingRowStyle-ForeColor="#000"
AutoGenerateColumns="false">
<Columns>
<asp:BoundField DataField="Name" HeaderText="File Name" />
<asp:TemplateField ItemStyle-HorizontalAlign="Center">
<ItemTemplate>
<asp:LinkButton ID="lnkDownload" runat="server" Text='<%# Eval("Path") %>' OnClick="DownloadFile"></asp:LinkButton>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
</div>
</form>
Namespace
using System.Data;
using System.IO;
C#
protected void DownloadFile(object sender, EventArgs e)
{
string filePath = (sender as LinkButton).Text;
Response.ContentType = ContentType;
Response.AppendHeader("Content-Disposition", "attachment; filename=" + Path.GetFileName(filePath));
Response.WriteFile(filePath);
Response.End();
}
protected void Upload(object sender, EventArgs e)
{
if (this.FileUpload1.HasFile)
{
DataTable dt = new DataTable();
if (ViewState["Table"] == null)
{
dt.Columns.AddRange(new DataColumn[2] { new DataColumn("Name",typeof(string)),
new DataColumn("Path",typeof(string))});
}
else
{
dt = (DataTable)ViewState["Table"];
}
this.FileUpload1.PostedFile.SaveAs(Server.MapPath("~/Files/") + this.FileUpload1.FileName);
dt.Rows.Add(this.FileUpload1.FileName, string.Format("~/Files/{0}", this.FileUpload1.FileName));
ViewState["Table"] = dt;
this.GridView1.DataSource = dt;
this.GridView1.DataBind();
}
}