البرمجة

كيفية إدراج صورة في قاعدة بيانات باستخدام C#

عندما تقوم بإدراج صورة في قاعدة بياناتك، يجب التحقق من أن الصورة تم تحميلها بشكل صحيح قبل قراءتها كمصفوفة بايت وحفظها في قاعدة البيانات. في الشيفرة التي قدمتها، تستخدم FileUpload1.PostedFile.FileName للتأكد من أن تحميل الملف ليس فارغاً، لكن يجب أيضاً التأكد من أن الملف الذي تم تحميله هو صورة صحيحة. يمكنك القيام بذلك باستخدام تنسيقات الصور المدعومة مثل JPEG أو PNG. يجب أيضاً التأكد من أن توجد إجراءات تحقق لإدخال البيانات المستخدمة في الاستعلام إلى قاعدة البيانات، مثل فحص عناصر الإدخال لتجنب حدوث ثغرات أمان.

لحل مشكلتك، يمكنك تعديل شيفرتك للتحقق من نوع الملف الذي تم تحميله. هناك أيضاً بعض الإجراءات التي يمكنك اتخاذها لتحسين الأمان والأداء:

  1. قبل قراءة الملف كمصفوفة بايت، تحقق من نوع الملف باستخدام امتداد الملف.
  2. استخدم تنسيقات الصور المدعومة مثل JPEG أو PNG.
  3. قم بتعيين حدود لحجم الملف الذي يمكن تحميله لتجنب تحميل ملفات كبيرة جداً.

إذا كانت هذه الإجراءات غير كافية، يمكنك مشاركة المزيد من التفاصيل حول المشكلة التي تواجهها لمساعدتك بشكل أفضل.

المزيد من المعلومات

لتحميل الصورة بشكل صحيح إلى قاعدة البيانات، يجب التأكد من النقاط التالية:

  1. التأكد من نوع الملف: يجب التحقق من أن الملف الذي تم تحميله هو صورة بواسطة استخدام امتداد الملف (مثل .jpg، .png).
  2. تحويل الصورة إلى مصفوفة بايت: يجب قراءة الملف المحمل كمصفوفة بايت باستخدام BinaryReader وحفظها كقيمة byte[].
  3. استخدام بيانات الصورة في الاستعلام: يجب استخدام القيمة المحملة كباراميتر في الاستعلام لإدراج الصورة في قاعدة البيانات.

على سبيل المثال، يمكنك تحديث شيفرتك كما يلي:

csharp
if (FileUpload1.HasFile) { string fileExtension = Path.GetExtension(FileUpload1.FileName).ToLower(); if (fileExtension == ".jpg" || fileExtension == ".jpeg" || fileExtension == ".png") { using (Stream s = FileUpload1.PostedFile.InputStream) using (BinaryReader br = new BinaryReader(s)) { byte[] imageBytes = br.ReadBytes((int)s.Length); SqlCommand NewUser = new SqlCommand("INSERT INTO [User] VALUES (@username, @password, @name, @lastname, @location, @profession, @email, @gender, @money, @pro, @xp, @lv, @m1, @m2, @m3, @m4, @m5, @d1, @d2, @d3, @d4, @d5, @im, @phone);", c); NewUser.Parameters.AddWithValue("@username", txtuser.Text); NewUser.Parameters.AddWithValue("@password", txtpass.Text); NewUser.Parameters.AddWithValue("@name", txtFName.Text); NewUser.Parameters.AddWithValue("@lastname", txtLName.Text); NewUser.Parameters.AddWithValue("@location", ddlcountry.SelectedItem.Text); NewUser.Parameters.AddWithValue("@profession", txtprofession.Text); NewUser.Parameters.AddWithValue("@email", txtemail.Text); NewUser.Parameters.AddWithValue("@gender", rbgender.SelectedItem.Text); NewUser.Parameters.AddWithValue("@money", 0); NewUser.Parameters.AddWithValue("@pro", DBNull.Value); NewUser.Parameters.AddWithValue("@xp", 0); NewUser.Parameters.AddWithValue("@lv", 1); NewUser.Parameters.AddWithValue("@m1", 0); NewUser.Parameters.AddWithValue("@m2", 0); NewUser.Parameters.AddWithValue("@m3", 0); NewUser.Parameters.AddWithValue("@m4", 0); NewUser.Parameters.AddWithValue("@m5", 0); NewUser.Parameters.AddWithValue("@d1", 0); NewUser.Parameters.AddWithValue("@d2", 0); NewUser.Parameters.AddWithValue("@d3", 0); NewUser.Parameters.AddWithValue("@d4", 0); NewUser.Parameters.AddWithValue("@d5", 0); NewUser.Parameters.AddWithValue("@im", imageBytes); NewUser.Parameters.AddWithValue("@phone", PhoneNumber.Text); c.Open(); int rowsAffected = NewUser.ExecuteNonQuery(); c.Close(); if (rowsAffected > 0) { LabelError.Text = "Success"; } Session["Conect"] = true; Session["CurentUserid"] = txtuser.Text; Response.Redirect("Finish Had Member.aspx", true); } } else { LabelError.Text = "Invalid file format. Please upload a JPG or PNG file."; } } else { LabelError.Text = "No file uploaded."; }

تأكد من تعديل الاستعلام وباراميتراته وفقاً لهيكل جدول البيانات الخاص بك.

زر الذهاب إلى الأعلى