how to save image in binary format in asp.net & Sql Server also retrieve same images
ImageSave.aspx
<%@
Page Language="C#" AutoEventWireup="true" CodeFile="ImageSave.aspx.cs" Inherits="ImageSave"
%>
<!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>
<table>
<tr>
<td>
SomeText</td>
<td>
<asp:TextBox ID="TextBoxSomeText"
runat="server"></asp:TextBox>
</td>
</tr>
<tr>
<td>
Image Name:
</td>
<td>
<asp:TextBox ID="txtImageName"
runat="server"></asp:TextBox>
</td>
</tr>
<tr>
<td>
Upload Image:
</td>
<td>
<asp:FileUpload ID="fileuploadImage"
runat="server"
/>
</td>
</tr>
<tr>
<td>
</td>
<td>
<asp:Button ID="btnUpload"
runat="server"
Text="Upload"
onclick="btnUpload_Click"
/>
</td>
</tr>
</table>
</div>
<div>
<!--<asp:gridview
id="GridView1" runat="server"
autogeneratecolumns="False">
<columns>
<asp:boundfield
datafield="ImagePath" headertext="Header
Text"></asp:boundfield>
<asp:templatefield
headertext="Image Form DataBase">
<itemtemplate>
<img
alt="Image" height="70px" src="<%# "ImageHandler.ashx?Id="+
Eval("id") %>" width="70px"/>
</itemtemplate>
</asp:templatefield>
</columns>
</asp:gridview>-->
<asp:DataList ID="Datalist1"
runat="server" Width="100px" RepeatColumns="1">
<ItemTemplate>
<img
alt="Image"
height="70px"
src="<%# "ImageHandler.ashx?Id="+
Eval("id") %>" width="70px"/>
</ItemTemplate>
</asp:DataList>
</div>
</form>
</body>
</html>
ImageSave.aspx.cs
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.Configuration;
using System.Security;
public partial class ImageSave : System.Web.UI.Page
{
string strcon = ConfigurationManager.ConnectionStrings["dbconnection"].ConnectionString;
protected void
Page_Load(object sender, EventArgs e)
{
LoadData();
}
private void
LoadData()
{
string
returnValue = string.Empty;
//Get the
databse connection string from web.config file
string
conString = ConfigurationManager.ConnectionStrings["dbConnection"].ConnectionString;
SqlConnection
sqlConn = new SqlConnection(conString);
SqlDataReader
sqlDr = null;
try
{
SqlCommand
sqlCmd = new SqlCommand("GetImageInfoFromDB", sqlConn);
sqlCmd.CommandType = CommandType.StoredProcedure;
sqlConn.Open();
sqlDr = sqlCmd.ExecuteReader();
//Bind
gridView
//GridView1.DataSource
= sqlDr;
//GridView1.DataBind();
Datalist1.DataSource = sqlDr;
Datalist1.DataBind();
}
catch (Exception ex)
{
//Handle
Error
}
finally
{
if
(sqlDr != null && !sqlDr.IsClosed)
{
sqlDr.Close(); //close sqldatareader
}
sqlConn.Close();
}
}
protected void
btnUpload_Click(object sender, EventArgs e)
{
//Condition
to check if the file uploaded or not
if
(fileuploadImage.HasFile)
{
//getting
length of uploaded file
int
length = fileuploadImage.PostedFile.ContentLength;
//create
a byte array to store the binary image data
byte[]
imgbyte = new byte[length];
//store
the currently selected file in memeory
HttpPostedFile
img = fileuploadImage.PostedFile;
//set the
binary data
img.InputStream.Read(imgbyte, 0,
length);
string
imagename = txtImageName.Text;
img.InputStream.Read(imgbyte, 0,
length);
string
SomeText = TextBoxSomeText.Text;
//use the
web.config to store the connection string
SqlConnection
connection = new SqlConnection(strcon);
connection.Open();
SqlCommand
cmd = new SqlCommand("INSERT INTO Image_Binary
(SomeText,ImagePath,Image_Blob) VALUES (@SomeText,@ImagePath,@Image_Blob)",
connection);
cmd.Parameters.Add("@SomeText",SqlDbType.VarChar,50).Value=SomeText;
cmd.Parameters.Add("@imagePath", SqlDbType.VarChar,
50).Value = imagename;
cmd.Parameters.Add("@image_Blob", SqlDbType.Image).Value
= imgbyte;
int
count = cmd.ExecuteNonQuery();
connection.Close();
if
(count == 1)
{
// BindGridData();
txtImageName.Text = string.Empty;
ScriptManager.RegisterStartupScript(this, this.GetType(),
"alertmessage", "javascript:alert('" + imagename + " image inserted successfully')", true);
}
}
}
}
ImageHandler.ashx
<%@
WebHandler Language="C#" Class="ImageHandler" %>
using System;
using System.Web;
using System.Data.SqlClient;
using System.Data;
using System.Configuration;
public class ImageHandler
: IHttpHandler
{
public void
ProcessRequest(HttpContext context)
{
//
context.Response.ContentType = "text/plain";
//context.Response.Write("Hello
World");
string
strId = context.Request.QueryString["Id"];
if (!string.IsNullOrEmpty(strId))
{
SqlConnection
conn = new SqlConnection(ConfigurationManager.ConnectionStrings["dbConnection"].ConnectionString);
SqlDataReader
sqlDr = null;
try
{
conn.Open(); //open database connection
SqlCommand
sqlCmd = new SqlCommand("GetImageFromDB", conn);
sqlCmd.CommandType = CommandType.StoredProcedure;
//Add
the parameter to SQLCommand object
sqlCmd.Parameters.AddWithValue("@id", strId);
sqlDr = sqlCmd.ExecuteReader();
sqlDr.Read();
context.Response.BinaryWrite((Byte[])sqlDr[3]);
context.Response.End();
}
catch
(Exception ex)
{
//Handle
error If occured
}
finally
{
if
(sqlDr != null && !sqlDr.IsClosed)
{
sqlDr.Close(); //close SqlDataReader
}
conn.Close();//close database connection
}
}
}
public bool
IsReusable
{
get
{
return
false;
}
}
}
Create 1 Procedures
Connect
to ImageSave.aspx.cs for all data retrive from data base
|
SqlCommand sqlCmd = new SqlCommand("GetImageInfoFromDB",
sqlConn);
|
CREATE PROCEDURE GetImageInfoFromDB
AS
BEGIN
SELECT id,SomeText,ImagePath,Image_Blob FROM dbo.Image_Binary
END
|
Create second procedure
|
Connect To ImageHandler.ashx for single data retrive
|
SqlCommand sqlCmd = new SqlCommand("GetImageFromDB", conn);
|
CREATE PROCEDURE GetImageFromDB(@id int)
AS
BEGIN
SELECT id,SomeText,ImagePath,Image_Blob FROM dbo.Image_Binary WHERE
id = @id
END
|
After that ImageHandler.ashx is called in ImageSave.aspx datalist view/ grid view page
|
<asp:DataList ID="Datalist1" runat="server"
Width="100px"
RepeatColumns="1">
<ItemTemplate>
<img alt="Image" height="70px" src="<%#
"ImageHandler.ashx?Id="+ Eval("id") %>" width="70px"/>
</ItemTemplate>
</asp:DataList>
|
#SradhaWebCreations
Contact : +91-9040573923, +91-7008182025
http://sradhawebcreations.com/
http://sradhawebcreations.blogspot.in/
https://facebook.com/sradhawebcreations
https://www.facebook.com/Sradhawebeducation/
No comments:
Post a Comment