Monday, 24 April 2017

How to upload and download file through gridview in ASP.Net with C#

FileUploadDownload.aspx File
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="FileUploadDownload.aspx.cs" Inherits="ShowDataOnePage2010.FileUploadDownload" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title>Upload Word Files to Database and Download files from database in asp.net</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
<asp:FileUpload ID="fileUpload1" runat="server" /><br />
<asp:Button ID="btnUpload" runat="server" Text="Upload" onclick="btnUpload_Click" />
</div>
<div>
<asp:GridView ID="gvDetails" runat="server" AutoGenerateColumns="false" DataKeyNames="Id">
<HeaderStyle BackColor="#df5015" Font-Bold="true" ForeColor="White" />
<Columns>
<asp:BoundField DataField="Id" HeaderText="Id" />
<asp:BoundField DataField="FileName" HeaderText="FileName" />
<asp:TemplateField HeaderText="FilePath">
<ItemTemplate>
<asp:LinkButton ID="lnkDownload" runat="server" Text="Download" OnClick="lnkDownload_Click"></asp:LinkButton>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
</div>
</form>
</body>
</html>

FileUploadDownload.aspx.cs file
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.IO;
using System.Data.SqlClient;
using System.Configuration;

namespace ShowDataOnePage2010
{
    public partial class FileUploadDownload : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                BindGridviewData();
            }
        }
        // Bind Gridview Data
        private void BindGridviewData()
        {
            string StrCon = ConfigurationManager.AppSettings["ConnectionString"];
            using (SqlConnection con = new SqlConnection(StrCon))
            {
                using (SqlCommand cmd = new SqlCommand())
                {
                    cmd.CommandText = "select * from FileInformation";
                    cmd.Connection = con;
                    con.Open();
                    gvDetails.DataSource = cmd.ExecuteReader();
                    gvDetails.DataBind();
                    con.Close();
                }
            }
        }
        // Save files to Folder and files path in database
        protected void btnUpload_Click(object sender, EventArgs e)
        {
            string StrCon = ConfigurationManager.AppSettings["ConnectionString"];
            string filename = Path.GetFileName(fileUpload1.PostedFile.FileName);
            Stream str = fileUpload1.PostedFile.InputStream;
            BinaryReader br = new BinaryReader(str);
            Byte[] size = br.ReadBytes((int)str.Length);
            using (SqlConnection con = new SqlConnection(StrCon))
            {
                using (SqlCommand cmd = new SqlCommand())
                {
                    cmd.CommandText = "insert into FileInformation(FileName,FileType,FileData) values(@Name,@Type,@Data)";
                    cmd.Parameters.AddWithValue("@Name", filename);
                    cmd.Parameters.AddWithValue("@Type", "application/word");
                    cmd.Parameters.AddWithValue("@Data", size);
                    cmd.Connection = con;
                    con.Open();
                    cmd.ExecuteNonQuery();
                    con.Close();
                    BindGridviewData();
                }
            }
        }
        protected void lnkDownload_Click(object sender, EventArgs e)
        {
            string StrCon = ConfigurationManager.AppSettings["ConnectionString"];
            LinkButton lnkbtn = sender as LinkButton;
            GridViewRow gvrow = lnkbtn.NamingContainer as GridViewRow;
            int fileid = Convert.ToInt32(gvDetails.DataKeys[gvrow.RowIndex].Value.ToString());
            using (SqlConnection con = new SqlConnection(StrCon))
            {
                using (SqlCommand cmd = new SqlCommand())
                {
                    cmd.CommandText = "select FileName, FileType, FileData from FileInformation where Id=@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["FileData"]);
                        Response.End();
                    }
                }
            }
        }
    }
}

web.config File
<configuration>
<appSettings>
    <add key="ConnectionString" value="Server=PRADEEP-HP;Database=Decofloore2;User Id=User_006;password=user006"/>
  </appSettings>
</configuration>

0 comments

Post a Comment