Step1.
First of all make a table named tblUpload for storing files.
Step2.
Make HTML for showing files in Gridview.
<asp:GridView ID="gv" runat="server" AutoGenerateColumns="false" DataKeyNames="FileId">
<HeaderStyle BackColor="#df5015" Font-Bold="true" ForeColor="White" />
<Columns>
<asp:BoundField DataField="FileId" HeaderText="ID" />
<asp:TemplateField headerText="Image">
<ItemTemplate>
<asp:Image ID="img" runat="server" ImageUrl='<%#Eval("Icon")%>' Height="40" Width="40" />
</ItemTemplate>
</asp:TemplateField>
<asp:BoundField DataField="FileName" HeaderText="Name" />
<asp:BoundField DataField="FileType" HeaderText="Type" />
<asp:BoundField DataField="DateOfUpload" HeaderText="Date Of Upload" />
<asp:TemplateField HeaderText="FilePath">
<ItemTemplate>
<asp:LinkButton ID="lnkDownload" runat="server" Text="Download" OnClick="lnkDownload_Click"></asp:LinkButton>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
Step 3.
In code behind file add these Namespaces.
using System;
using System.Data.SqlClient;
using System.IO;
using System.Web.UI.WebControls;
Step 4.
Add a folder named Image to solution.
And add some images of icons in this folder.
Step 5.
And now add this code to code behind file.
string strCon = "Data Source=JITENDRA-PC\\SQLEXPRESS;Initial Catalog=Vaibhav_Task;Integrated Security=True";
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
GridviewData();
}
}
// Bind Gridview Data
private void GridviewData()
{
using (SqlConnection con = new SqlConnection(strCon))
{
using (SqlCommand cmd = new SqlCommand())
{
cmd.CommandText = "select * from tblUpload";
cmd.Connection = con;
con.Open();
gv.DataSource = cmd.ExecuteReader();
gv.DataBind();
con.Close();
}
}
}
// Save files to Folder and files path in database
protected void btnUpload_Click(object sender, EventArgs e)
{
string filename = Path.GetFileName(fileUpload1.PostedFile.FileName);
Stream str = fileUpload1.PostedFile.InputStream;
string ext = System.IO.Path.GetExtension(fileUpload1.PostedFile.FileName);
BinaryReader br = new BinaryReader(str);
Byte[] size = br.ReadBytes((int)str.Length);
string date= System.DateTime.Now.ToString();
string icon;
if (ext == ".pdf")
{
icon = "Image/pdf.png" ;
}
else if (ext == ".jpg" || ext == ".jpeg" || ext == ".jpe" || ext == ".png" || ext == ".jfif")
{
icon = "Image/jpg.jpg" ;
}
else if (ext == ".ppt")
{
icon = "Image/ppt.jpg" ;
}
else if (ext == ".docx" || ext == ".txt" || ext == ".doc")
{
icon = "Image/word.jpg" ;
}
else if (ext == ".xls")
{
icon = "Image/xls.jpg" ;
}
else
{
icon = "Image/unknown.png" ;
}
using (SqlConnection con = new SqlConnection(strCon))
{
using (SqlCommand cmd = new SqlCommand())
{
cmd.CommandText = "insert into tblUpload(Icon,FileName,FileType,DateOfUpload,Data) values(@Icon,@FileName,@FileType,@DateOfUpload,@Data)";
cmd.Parameters.AddWithValue("@Icon", icon);
cmd.Parameters.AddWithValue("@FileName", filename);
cmd.Parameters.AddWithValue("@FileType", ext);
cmd.Parameters.AddWithValue("@DateOfUpload",date);
cmd.Parameters.AddWithValue("@Data", size);
cmd.Connection = con;
con.Open();
cmd.ExecuteNonQuery();
con.Close();
GridviewData();
}
}
}
// This button click event is used to download files from gridview
protected void lnkDownload_Click(object sender, EventArgs e)
{
LinkButton lnkbtn = sender as LinkButton;
GridViewRow gvrow = lnkbtn.NamingContainer as GridViewRow;
int fileid = Convert.ToInt32(gv.DataKeys[gvrow.RowIndex].Value.ToString());
using (SqlConnection con = new SqlConnection(strCon))
{
using (SqlCommand cmd = new SqlCommand())
{
cmd.CommandText = "select FileName, FileType, Data from tblUpload where FileId=@Id";
cmd.Parameters.AddWithValue("@Id", fileid);
cmd.Connection = con;
con.Open();
SqlDataReader dr = cmd.ExecuteReader();
if (dr.Read())
{
Response.ContentType = dr["FileType"].ToString();
Response.AddHeader("Content-Disposition", "attachment;filename=\"" + dr["FileName"] + "\"");
Response.BinaryWrite((byte[])dr["Data"]);
Response.End();
}
}
}
}
Output-
No comments:
Post a Comment