كيفية حفظ صورة فى مشاريع الشبكة Web

السلام عليكم ورحمة الله وبركاته ,سألنى بعض الأخوة عن كيفية حفظ صورة فى قاعدة البيانات فى مشروع ASP.NET  وعرضها للمستخدم ,ببساطة لا يسرى الأمر هكذا ,ففى مشاريع الشبكة Web  لا نقوم بحفظ الصور فى قاعدة البيانات ثم نستعيدها لأن هذا سيبطىء من عملية الحفظ (تحويل الصورة ال Byte) فى قاعدة البيانات ثم تحويلها من (Byte الى عملية ال صورة) ثم ال Render  عن طريق المتصفح ,ببساطة ما نقوم به هو حقظ الصورة فى مجلد مخصص للصور داخل المشروع وحفظ اسم الصورة المميز فى قاعدة البيانات ,وهذا هو مثال :

هذا شكل الصفحة :

Form

وهذا مكونات المشروع

solution

حيث سنقوم بحفظ الصور فى مجلد IMG

وقاعدة البيانات من نوع SQL database  وتسمى UploadedImage وبها جدول واحد يسمى Images  ومكون من حقلين IMGID int  و  ImageName nvarchar(50)

والآن مع الشفرة:

[csharp]
using System;
using System.Data;
using System.Data.SqlClient;

public partial class _Default : System.Web.UI.Page
{

protected void Page_Load(object sender, EventArgs e)
{

}
protected void btnShowLast_Click(object sender, EventArgs e)
{
//هنا نقوم بعمل وصلة الاتصال بخادم ال اس كيو ال
SqlConnection con = new SqlConnection("server=.;Database=UploadedImage;Integrated Security=True;");
try
{
//هنا نحدد مكان المجلد وقمت باستخدام المكان الثابت لانى استخدمت مثال من نوع File system
string serverpath = @"C:\FileUpload\IMG\";
//هنا نقوم بالتأكد من أن ال File Upload به ملف
if (FileUpload1.HasFile)
{
//هنا نحفظ الصورة فى المجلد باستخدام مكانه واسمها ,طبعا هذا مثال بسيط والا فانه يجب أخذ الاحتياطات حتى لا يتكرر اسم الصورة فتتم
// محوالصورة القديمة
FileUpload1.SaveAs(serverpath + FileUpload1.FileName);
//هنا نتأكد من فتح الاتصال
if (con.State == ConnectionState.Closed)
{
con.Open();
}
//نقوم بحفظ اسم الصورة
SqlCommand comset = new SqlCommand("insert into images (imagename)values (@imagename)",con);
comset.Parameters.AddWithValue("@imagename", FileUpload1.FileName);
comset.ExecuteNonQuery();
}
//قمت هنا بعمل جملة استعلام لكى تعلم كيف تحضر صورة ولتكن آخر صورة تم ادخالها وتظهرها للمستخدم
SqlCommand comget = new SqlCommand("select top 1 imagename from images", con);
string dbimage;
dbimage = Convert.ToString( comget.ExecuteScalar());
//هنا اعطاء مكان الصورة لآداة الصورة
Image1.ImageUrl = serverpath + dbimage;

}
catch (Exception ex)
{

}

}
}

[/csharp]

حول أحمد حسان
Senior IT Specialist @ German Hospital of Alexandria ,Co-Developed Medxpress ,Hospital ERP system ,Microsoft Certified Solution Developer

اترك رد

إملأ الحقول أدناه بالمعلومات المناسبة أو إضغط على إحدى الأيقونات لتسجيل الدخول:

WordPress.com Logo

أنت تعلق بإستخدام حساب WordPress.com. تسجيل خروج   / تغيير )

صورة تويتر

أنت تعلق بإستخدام حساب Twitter. تسجيل خروج   / تغيير )

Facebook photo

أنت تعلق بإستخدام حساب Facebook. تسجيل خروج   / تغيير )

Google+ photo

أنت تعلق بإستخدام حساب Google+. تسجيل خروج   / تغيير )

Connecting to %s

%d مدونون معجبون بهذه: