முதலில்
ஒரு Asp.net application உருவாக்கி அதில் form1 என்பதில் பின் வருமாறு ஒரு file
upload control ஒன்றும் button ஒன்றும் உருவாக்கிக் கொள்வோம்.
File upload
control என்பதன் இமேஜ் ஃபைலை தேர்ந்தெடுத்துக் கொள்ளவும். இப்பொழுடு upload பட்டனை
கிளிக் செய்தால் இமேஜ் ஆனது டேட்டா பேஸில் ஸ்டோர் ஆக வேண்டும். கீழே உள்ள லேபிளில்
upload success என்றும் view upload image என்ற ஹைபர் லிங்கும் உருவாக வேண்டும். அந்த
லிங்கை கிளிக் செய்தால் இமேஜ் ஆனது டவுன் லோட் செய்யப்பட்டு காட்சிபடுத்தல் வேண்டும்.
முதலில்
sql server-ல் SampleDB என்றொரு டேட்டாபேஸ் உருவாக்கிக்க் கொள்ளவும். அதில் பின் வருமாறு
டேபிள் ஒன்று உருவாக்கவும்.
Create table tblImages
(
Id int primary key identity,
Name nvarchar(255),
Size int,
ImageData varbinary(max)
)
Go
இதில்
id என்பது பிரைமரி கீ மற்றும் ஆட்டோ இன்கிரிமென்ட் ஃபீல்டு ஆகும்.
Name என்பது
இமேஜின் பெயர். Size என்பது அதன் அளவு ஆகும். ImageData என்பது இமேஜ் ஆகும் . இதன்
டேட்டா டைப் varbinary(max) ஆகும்.
இப்பொழுது
கீழே உள்ளவாறு இமேஜை ஸ்டோர் செய்ய ஸ்டோர்டு ப்ரசிசர் ஒன்று உருவாக்கிக் கொள்ளவும்.
Create procedure spUploadImage
@Name
nvarchar(255),
@Size
int,
@ImageData
varbinary(max),
@NewId
int output
as
Begin
Insert into
tblImages
values (@Name, @Size, @ImageData)
Select @NewId = SCOPE_IDENTITY()
End
Go
இதில்
spUploadImage என்பது ப்ரசிசரின் பெயர்.
@Name
,@size,@ImageData என்பவை உள்ளீட்டு பாராமீட்டர்கள்.@NewId
என்பது output பாராமீட்டர் ஆகும்.
SCOPE_IDENTITY
என்பது கடைசியாக அப்லோட் செய்யப்பட்ட டேட்டானின் ஐடியை ரிடர்ன் செய்கின்றது.
டிசனிங்க்
பின் வருமாறு செய்து கொள்ளவும்.
<asp:FileUpload
ID="FileUpload1"
runat="server"
/>
<br
/><br />
<asp:Button
ID="btnUpload"
runat="server"
Text="Upload"
OnClick="btnUpload_Click"
/>
<br
/><br />
<asp:Label
ID="lblMessage"
runat="server"></asp:Label>
<br
/><br />
<asp:HyperLink
ID="hyperlink"
runat="server">View
Uploaded Image</asp:HyperLink>
இப்பொழுது
web.config சென்று ஒரு DBCS என்ற பெயரில் கனக்சன் ஸ்ட்ரிங்க் ஒன்று உருவாக்கிக் கொள்ளவும்.
இது SampleDB என்ற டேட்டாபேஸுடன் கனக்சன் ஏற்படுத்த உதவுகின்றது.
<add name="DBCS"
connectionString="server=.;database=SampleDB;integrated
security=SSPI"/>
இதில்
integrated security=SSPI என்பது டேட்டா பேஸ் உடன் கனக்ட் செய்ய தனியாக பயனர் பெயர்,
கடவுச்சொல் தேவையில்லை . விண்டோஸ் அதண்டிகேசனே போதும் என்பதைக் குறிக்கின்றது.
இப்பொழுது
WebForm1.aspx.cs சென்று
பின் வரும் நிரல் வரிகளை எழுதவும்.
using System;
using
System.Configuration;
using System.Data;
using
System.Data.SqlClient;
using System.IO;
using System.Web;
namespace Demo
{
public partial class WebForm1 : System.Web.UI.Page
{
protected void
Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
lblMessage.Visible = false;
hyperlink.Visible = false;
}
}
protected void
btnUpload_Click(object sender, EventArgs e)
{
HttpPostedFile postedFile =
FileUpload1.PostedFile;
string filename = Path.GetFileName(postedFile.FileName);
string fileExtension = Path.GetExtension(filename);
int
fileSize = postedFile.ContentLength;
if (fileExtension.ToLower() == ".jpg" || fileExtension.ToLower() == ".gif"
|| fileExtension.ToLower() == ".png"
|| fileExtension.ToLower() == ".bmp")
{
Stream stream =
postedFile.InputStream;
BinaryReader binaryReader = new BinaryReader(stream);
Byte[] bytes = binaryReader.ReadBytes((int)stream.Length);
string cs = ConfigurationManager.ConnectionStrings["DBCS"].ConnectionString;
using (SqlConnection
con = new SqlConnection(cs))
{
SqlCommand cmd = new
SqlCommand("spUploadImage",
con);
cmd.CommandType = CommandType.StoredProcedure;
SqlParameter paramName = new
SqlParameter()
{
ParameterName = @"Name",
Value = filename
};
cmd.Parameters.Add(paramName);
SqlParameter paramSize = new SqlParameter()
{
ParameterName = "@Size",
Value = fileSize
};
cmd.Parameters.Add(paramSize);
SqlParameter paramImageData = new SqlParameter()
{
ParameterName = "@ImageData",
Value = bytes
};
cmd.Parameters.Add(paramImageData);
SqlParameter paramNewId = new SqlParameter()
{
ParameterName = "@NewId",
Value = -1,
Direction = ParameterDirection.Output
};
cmd.Parameters.Add(paramNewId);
con.Open();
cmd.ExecuteNonQuery();
con.Close();
lblMessage.Visible = true;
lblMessage.ForeColor = System.Drawing.Color.Green;
lblMessage.Text = "Upload Successful";
hyperlink.Visible = true;
hyperlink.NavigateUrl = "~/WebForm2.aspx?Id="
+
cmd.Parameters["@NewId"].Value.ToString();
}
}
else
{
lblMessage.Visible = true;
lblMessage.ForeColor = System.Drawing.Color.Red;
lblMessage.Text = "Only images (.jpg, .png,
.gif and .bmp) can be uploaded";
hyperlink.Visible = false;
}
}
}
}
வெப் பயன்பாட்டை
இயக்கி ஒரு இமேஜை அப்லோட் செய்து கொள்ளவும்.
இப்பொழுது ஹைபர்லிங்கை கிளிக் செய்தால் webform2.aspx என்பது open ஆகும். இந்த பக்கத்தை
முதலில் நாம் டிசைன் செய்ய வேண்டும்.
இமேஜின்
ஐடி ஆனது ஃபார்மின் கொரி ஸ்டிரிங்க் பாரா மீட்டர். இதை பயன்படுத்தி இமேஜை கொரி மூலம்
எக்ஸ்கிகியூட் செய்து பெற வேண்டும்.
Sqlserver-ல்
பின் வரும் ஸ்டோர்டு பிரசிசர் ஒன்றை உருவாக்கவும்.
Create procedure spGetImageById
@Id int
as
Begin
Select ImageData
from tblImages where
Id=@Id
End
Go
இதில் spGetImageById என்பது பிரசிசரின் பெயர்..
இதற்கு @id ஆனது இன்புட் கொடுக்கப்பட்டு
ImageData ரீட் செய்யப்படுகின்றது.
கீழ்வரும்படி
ஒரு இமேஜ் கன்ட் ரோலை webform2 –ல் உருவாக்கிக் கொள்ளவும்.
<asp:Image
ID="Image1"
Height="500px"
Width="500px"
runat="server"
/>
WebForm2.aspx.cs என்பதில் பின் வரும் நிரல் வரிகளை இனைக்கவும்.
using System;
using
System.Configuration;
using System.Data;
using
System.Data.SqlClient;
namespace Demo
{
public partial class WebForm2 : System.Web.UI.Page
{
protected void
Page_Load(object sender, EventArgs e)
{
string cs = ConfigurationManager.ConnectionStrings["DBCS"].ConnectionString;
using (SqlConnection
con = new SqlConnection(cs))
{
SqlCommand cmd = new
SqlCommand("spGetImageById",
con);
cmd.CommandType = CommandType.StoredProcedure;
SqlParameter paramId = new SqlParameter()
{
ParameterName = "@Id",
Value = Request.QueryString["Id"]
};
cmd.Parameters.Add(paramId);
con.Open();
byte[] bytes = (byte[])cmd.ExecuteScalar();
string strBase64 = Convert.ToBase64String(bytes);
Image1.ImageUrl = "data:Image/png;base64,"
+ strBase64;
}
}
}
}
இப்பொழுது
வெப் ஃபார்ம்2 லோட் ஆகும் பொழுது இமேஜ் ஆனது காட்சிப்படுத்தப்படுகின்றது.
நன்றி
முத்து
கார்த்திகேயன்,மதுரை.
No comments:
Post a Comment