كيفية رفع ملف او صورة الي موقع من خلال FileUpload in asp.net
يتسائل البعض اين يتم تخزين صورة او ملف يتم رفعها . تخزين الصور يتم في فولدر الصور في برنامج الفيجوال ستوديو
مثلا نريد حفظ جدول يحتوي علي اسم وصورة لمنتج ما ..ليتم تعديلها او حذفها بعد ذلك
اين تحفظ الصورة
يتم حفظ الصورة في فولدر اما اسم الصورة النصية يتم حفظها في حقل في الجدول
مثال علي ذلك
لدينا جدول يسمي
products
وبه الحقول الاتية
product_name - product_image
سنضع تكست بوكس textbox
واداة الفايل ابلود Fileupload
//لابد من عمل استخدام واستيراد ل
using System.Data.SqlClient;
//هنا سوف اقوم بتعريف نص الاتصال بقاعدة البيانات واضعه في متغير نصي
string cs = ConfigurationManager.ConnectionStrings["yourConectionname"].ConnectionString.ToString();
// هنا افتح الاتصال بقاعدة البيانات بناء علي نص الاتصال السابق
SqlConnection cn = new SqlConnection(cs);
cn.Open();
//هنا المتغير الذي يوف اعبئ به جملة الاستعلام
SqlCommand cmd = new SqlCommand();
// جملة الاستعلام او الادخال اضعها في متغير نصي
string sqlstatment = "INSERT INTO products(product_name,product_image) values(@name,@images)";
// نوع جملة استعلام نصية
cmd.CommandType = CommandType.Text;
// اضع جملة الاستعلام داخل المتغير الكوماند
cmd.CommandText = sqlstatment;
// الاتصال بقاعدة البيانات
cmd.Connection = cn;
// الان اكتب المتغيرات والقيم الي تأخذ منها
// هنا مثلا متغير الاسم وسوف يأخذ القيمة من التكست بوكس
cmd.Parameters.AddWithValue("@name", texName.Text);
// هنا متغير الصورة وسوف يأخذ من الفايل ابلود
cmd.Parameters.AddWithValue("@images", FileUpload1.FileName);
//هنا اتأكد اذا كان في الفايل ابلود صورة اذن سوف ارفعها
if (FileUpload1.HasFile && FileUpload1.PostedFile.ContentLength > 0)
{
// يقوم الفايلابلود برفع الصورة في الفولدر الخاص بالصور
FileUpload1.SaveAs(Server.MapPath("~/images/" + FileUpload1.FileName));
}
//بنشأ داتا ادابتر وهي وسيط بين الكوماند الذي به جملة الادخال او الاستعلام وبين قاعدة البيانات نفسها
// اي لكي اخذ البيانات واضعها بالجدول
SqlDataAdapter ad = new SqlDataAdapter(cmd);
//الداتا سيت
DataSet ds = new DataSet();
ad.SelectCommand = cmd;
// احفظ البيانات بالجدول من خلال تعبئة الداتاسيت
ad.Fill(ds);
ملاحظات هامة:
1- مشكلة ان الصورة لا ترفع في الفولدر تأكد من عدم وضعك للاداة الاجاكس ابديت بانل فهي تعطل الاداة ابلود عن العمل
2-الملفات كبيرة الحجم ولا ترفع
سوف يعمل الكود بشكل صحيح في حالة اذا كان حجم الملف اقل من او يساوي 4 ميجا
وبالظبط فأن مايكروسوفت حددت المساحة الافتراضية في الويب كونفيج لحجم الملف الذي يتم رفعه هو 4 ميجابايت اي 4096 KB
وهو ما يسمي ب maxRequestLength for upload file in asp.net
اذن كيف اذيد maxRequestLength او اقصي حجم لرفع ملف الي قيمة انا اريدها
للملفات الكبيرة الحجم.. تقول مايكروسوف ايضا ان عليك وضع ذلك
وتغيير المساحة الافتراضية كالاتي مثلا اريد اقصي حجم ملف ليتم رفعه هو 20 ميجا
فيتم احتساب ذلك بالكيلو بايت كالاتي
بما ان كل لميجا بايت = 1024 كيلوبايت
20 ميجا * 1024 كيلو بايت = 20480 كيلو بايت
وذلك في وسم ال System.web
<system.web> <httpRuntime executionTimeout="240" maxRequestLength="20480" /> system.web>
فيديو توضيحي يوضح برمجة شاشة رفع الملفات وكيفية ادراج ملف
Upload file C# in asp.net رفع ملف, صورة,فيديو