Hi itsjayshah,
I have checked the code its working.
Check this example. I have also added a link to download the uploaded file.
HTML
<asp:FileUpload ID="flnUploadImage" runat="server" AllowMultiple="true" />
<asp:Button ID="btnUpload" runat="server" Text="Upload" OnClick="Upload" />
<br />
<asp:GridView ID="gvFiles" runat="server" AutoGenerateColumns="false">
<Columns>
<asp:BoundField DataField="Text" HeaderText="File Name" />
<asp:TemplateField HeaderText="Action">
<ItemTemplate>
<asp:LinkButton ID="lnkDownload" Text="Download" CommandArgument='<%# Eval("Value") %>'
runat="server" OnClick="DownloadFile"></asp:LinkButton>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
Namespaces
C#
using System.IO;
VB.Net
Imports System.IO
Code
C#
protected void Upload(object sender, EventArgs e)
{
if (flnUploadImage.HasFiles)
{
foreach (HttpPostedFile postedFile in flnUploadImage.PostedFiles)
{
Stream fs = postedFile.InputStream;
BinaryReader br = new BinaryReader(fs);
byte[] bytes = br.ReadBytes((Int32)fs.Length);
//Save the Byte Array as File.
string filePath = "~/Files/" + Path.GetFileName(postedFile.FileName);
File.WriteAllBytes(Server.MapPath(filePath), bytes);
}
}
string[] filePaths = Directory.GetFiles(Server.MapPath("~/Files/"));
List<ListItem> files = new List<ListItem>();
foreach (string filePath in filePaths)
{
files.Add(new ListItem(Path.GetFileName(filePath), filePath));
}
gvFiles.DataSource = files;
gvFiles.DataBind();
}
protected void DownloadFile(object sender, EventArgs e)
{
string filePath = (sender as LinkButton).CommandArgument;
Response.ContentType = ContentType;
Response.AppendHeader("Content-Disposition", "attachment; filename=" + Path.GetFileName(filePath));
Response.WriteFile(filePath);
Response.End();
}
VB.Net
Protected Sub Upload(ByVal sender As Object, ByVal e As EventArgs)
If flnUploadImage.HasFiles Then
For Each postedFile As HttpPostedFile In flnUploadImage.PostedFiles
Dim fs As Stream = postedFile.InputStream
Dim br As BinaryReader = New BinaryReader(fs)
Dim bytes As Byte() = br.ReadBytes(CType(fs.Length, Int32))
Dim filePath As String = "~/Files/" & Path.GetFileName(postedFile.FileName)
File.WriteAllBytes(Server.MapPath(filePath), bytes)
Next
End If
Dim filePaths As String() = Directory.GetFiles(Server.MapPath("~/Files/"))
Dim files As List(Of ListItem) = New List(Of ListItem)()
For Each filePath As String In filePaths
files.Add(New ListItem(Path.GetFileName(filePath), filePath))
Next
gvFiles.DataSource = files
gvFiles.DataBind()
End Sub
Protected Sub DownloadFile(ByVal sender As Object, ByVal e As EventArgs)
Dim filePath As String = (TryCast(sender, LinkButton)).CommandArgument
Response.ContentType = ContentType
Response.AppendHeader("Content-Disposition", "attachment; filename=" & Path.GetFileName(filePath))
Response.WriteFile(filePath)
Response.End()
End Sub