File Upload in Gridview ASP.NET
Introduction:
In
this article I’m going to explain how to use file upload control in grid view
for uploading images or files to the server.
Description:
The FileUpload control allows you to provide users with a way to send a file from
their computer to the server. The control is useful for allowing users to
upload images, text files or other files.
Here I’ll show you how use file upload control in gridview to upload the images
or files to the server and I’m going to display that files in gridview.
So we have to create one table for storing basic details of employee including
employee’s photo
Table Design:
Column Name
|
Data type
|
empid
|
varchar(50)
|
name
|
varchar(100)
|
photo_path
|
varchar(100)
|
Create table script:
CREATE TABLE [dbo].[UploadDoc](
[empid]
[varchar](10) NULL,
[name]
[varchar](100) NULL,
[photo_path]
[varchar](100) NULL
) ON [PRIMARY]
.ASPX CODE:
<%@ Page
Language="C#"
AutoEventWireup="true"
CodeFile="USER_Profile_UPload.aspx.cs"
Inherits="USER_Profile_UPload"
%>
<!DOCTYPE html PUBLIC "-//W3C//DTD
XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>
<div>
<asp:GridView ID="gvUpload" runat="server" AutoGenerateColumns="false" ShowFooter="true">
<Columns>
<asp:TemplateField HeaderText="S.No."
ItemStyle-HorizontalAlign="Center">
<ItemTemplate>
<%#Container.DataItemIndex+1%>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Employee-ID">
<ItemTemplate>
<asp:Label ID="lblEmpID"
runat="server"
Text='<%#DataBinder.
Eval(Container.DataItem, "empid") %>'></asp:Label>
</ItemTemplate>
<FooterTemplate>
<asp:TextBox ID="txtEmpID"
runat="server"></asp:TextBox>
</FooterTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Name">
<ItemTemplate>
<asp:Label ID="lblName"
runat="server"
Text='<%#DataBinder.
Eval(Container.DataItem, "name") %>'></asp:Label>
</ItemTemplate>
<FooterTemplate>
<asp:TextBox ID="txtName"
runat="server"></asp:TextBox>
</FooterTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Photo">
<ItemTemplate>
<asp:Image ID="imgPhoto"
runat="server"
Width="100px"
Height="120px"
ImageUrl='<%#DataBinder.Eval(Container.DataItem, "photo_path")
%>' />
</ItemTemplate>
<FooterTemplate>
<asp:FileUpload ID="fUpload"
runat="server"
/>
</FooterTemplate>
</asp:TemplateField>
<asp:TemplateField>
<FooterTemplate>
<asp:Button ID="btnUpload"
runat="server"
Text="Upload"
OnClick="btnUpload_OnClick"
/>
</FooterTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
<asp:Label ID="lblMsg" runat="server"></asp:Label>
</div>
</div>
</form>
</body>
</html>
.CS CODE:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using System.Data.SqlClient;
using System.IO;
using System.Configuration;
public partial class USER_Profile_UPload
: System.Web.UI.Page
{
string Str = ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString;
protected void
Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
BindGrid();
}
}
protected void
BindGrid()
{
DataSet ds = new DataSet();
DataTable FromTable = new
DataTable();
SqlConnection conn = new
SqlConnection(Str);
conn.Open();
string cmdstr = "Select
* from UploadDoc";
SqlCommand cmd = new
SqlCommand(cmdstr, conn);
SqlDataAdapter adp = new
SqlDataAdapter(cmd);
adp.Fill(ds);
cmd.ExecuteNonQuery();
FromTable = ds.Tables[0];
if
(FromTable.Rows.Count > 0)
{
gvUpload.DataSource = FromTable;
gvUpload.DataBind();
}
else
{
FromTable.Rows.Add(FromTable.NewRow());
gvUpload.DataSource = FromTable;
gvUpload.DataBind();
int TotalColumns = gvUpload.Rows[0].Cells.Count;
gvUpload.Rows[0].Cells.Clear();
gvUpload.Rows[0].Cells.Add(new TableCell());
gvUpload.Rows[0].Cells[0].ColumnSpan = TotalColumns;
gvUpload.Rows[0].Cells[0].Text = "No records Found";
}
ds.Dispose();
conn.Close();
}
protected void
btnUpload_OnClick(object sender, EventArgs e)
{
TextBox txtEmpID = (TextBox)gvUpload.FooterRow.FindControl("txtEmpID");
TextBox txtName = (TextBox)gvUpload.FooterRow.FindControl("txtName");
FileUpload fuploadFile = (FileUpload)gvUpload.FooterRow.FindControl("fUpload");
Button btnUpload = (Button)gvUpload.FooterRow.FindControl("btnUpload");
if (fuploadFile.HasFile)
{
string fileName = fuploadFile.FileName;
string exten = Path.GetExtension(fileName);
//here we have to restrict file type
exten = exten.ToLower();
string[] acceptedFileTypes = new
string[4];
acceptedFileTypes[0] = ".jpg";
acceptedFileTypes[1] = ".jpeg";
acceptedFileTypes[2] = ".gif";
acceptedFileTypes[3] = ".png";
bool acceptFile = false;
for (int i = 0; i
<= 3; i++)
{
if (exten == acceptedFileTypes[i])
{
acceptFile = true;
}
}
if (!acceptFile)
{
lblMsg.Text = "The file you are trying
to upload is not a permitted file type!";
}
else
{
//upload the file onto the server
fuploadFile.SaveAs(Server.MapPath("~/Document/"
+ fileName));
SqlConnection conn = new SqlConnection(Str);
conn.Open();
string cmdstr = "insert
into UploadDoc(empid,name,photo_path)values(@empid,@name,@photo)";
SqlCommand cmd = new SqlCommand(cmdstr,
conn);
cmd.Parameters.AddWithValue("@empid",
txtEmpID.Text);
cmd.Parameters.AddWithValue("@name",
txtName.Text);
cmd.Parameters.AddWithValue("@photo",
"Document/" + fileName);
cmd.ExecuteNonQuery();
conn.Close();
BindGrid();
}
}
}
}
No comments:
Post a Comment