Hi subham,
Refer the below sample.
HTML
<asp:FileUpload ID="FileUpload1" runat="server" />
<br />
<asp:Button OnClick="Button1_Click" Text="Bind" runat="server" />
<br />
<asp:GridView ID="GridView1" runat="server" OnRowCommand="GridView1_RowCommand">
<Columns>
<asp:TemplateField>
<ItemTemplate>
<asp:LinkButton Text="Download" runat="server" CommandName="Download" CommandArgument='<%# Eval("File") %>'></asp:LinkButton>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
Code
C#
protected void Button1_Click(object sender, EventArgs e)
{
if (FileUpload1.HasFile)
{
FileUpload1.PostedFile.SaveAs(Server.MapPath("~/Data/") + FileUpload1.FileName);
}
DataTable dt = new DataTable();
dt.Columns.Add("File", typeof(string));
dt.Columns.Add("Size", typeof(string));
dt.Columns.Add("Type", typeof(string));
foreach (string str in System.IO.Directory.GetFiles(Server.MapPath("~/Data")))
{
System.IO.FileInfo fi = new System.IO.FileInfo(str);
dt.Rows.Add(fi.Name, fi.Length, fi.Extension);
}
GridView1.DataSource = dt;
GridView1.DataBind();
}
protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
{
if (e.CommandName == "Download")
{
Response.Clear();
Response.ContentType = "application/octet-stream";
Response.AppendHeader("content-disposition", "filename=" + e.CommandArgument);
Response.TransmitFile(Server.MapPath("~/Data/") + e.CommandArgument);
Response.End();
}
}
VB.Net
Protected Sub Button1_Click(sender As Object, e As EventArgs)
If FileUpload1.HasFile Then
FileUpload1.PostedFile.SaveAs(Server.MapPath("~/Data/") + FileUpload1.FileName)
End If
Dim dt As New DataTable()
dt.Columns.Add("File", GetType(String))
dt.Columns.Add("Size", GetType(String))
dt.Columns.Add("Type", GetType(String))
For Each str As String In System.IO.Directory.GetFiles(Server.MapPath("~/Data"))
Dim fi As New System.IO.FileInfo(str)
dt.Rows.Add(fi.Name, fi.Length, fi.Extension)
Next
GridView1.DataSource = dt
GridView1.DataBind()
End Sub
Protected Sub GridView1_RowCommand(sender As Object, e As GridViewCommandEventArgs)
If e.CommandName = "Download" Then
Response.Clear()
Response.ContentType = "application/octet-stream"
Response.AppendHeader("content-disposition", "filename=" + e.CommandArgument)
Response.TransmitFile(Server.MapPath("~/Data/") + e.CommandArgument)
Response.[End]()
End If
End Sub
Screenshot
