السلام عليكم ورحمة الله وبركاته
طريقة رفع الملفات في ال asp.net
والتحقق من الانواع والحجم واي تفاصيل اخرى
الادوات المستخدمه في المقال هي اداة
FileUpload1
وادارة زر Button
نقوم بوضع الاداتين في الصفحة وبعد هذا داخل حدث النقر على الزر button
نقوم بكتابة الكود الخاص بعملية رفع الملف الذي تم اختيار من الاداة FileUpload1
في داخل مجلد فرعي في مجلد المشروع الرئيسي
لنفرض ان الاسم البرمجي للادة FileUpload1 هو UpImg
في البداية نتحقق من ان المستخدم قد قام بختيار ملف لرفعه
في حالة لم يتم اختيار ملف لرفعه في داخل الاداة UpImg سوف نطبع له في داخل اداة ليبل سميناها ErrorLabel راسلة تقول انه لم يتم اختيار ملف لرفعه وبعد هذا نخرجه من تنفيذ بقية الكود المكتوب في حدث النقر على زر التحميلكود:If UpImg.PostedFile.FileName = Nothing Then ErrorLabel.Text = "لم يتم اختيار ملف لرفعه" Exit Sub End If
اذا قام المستخدم باختيار ملف لتحميله في داخل اداة اختيار الملفات فان الجملة الشرطيه اعلاه لن تتحقق وبالتالي فانه لن يدخل لكود الجملة الشرطيه ولن يقوم بطباعة رسالة الخطأ ولن يقوم باخراجه من تنفيذ بقية الكود ,,, يعني سوف يستمر في تنفيذ الكود
الان نقوم بتعريف متغير نسند له المسار الذي سوف يتم تخزين الملف المختار لرفعه فيه مثلا هكذا
في البداية قمنا باسناد المسار كامل للمجلد الذي سوف نقوم برفع الملف داخله وهوكود:Dim FPath As String ="C:\Inetpub\wwwroot\ElectronicMall1.0\uploaded\" & IO.Path.GetFileName(UpImg.PostedFile.FileName)
C:\Inetpub\wwwroot\ElectronicMall1.0\uploaded\
حيث ان ElectronicMall1.0 هذا هو مجلد المشروع الرئيسي
و uploaded هذا هو اسم المجلد الفرعي الذي سوف نضع فيه الملف
بعد ذلك اسندنا للمتغير اسم الملف الذي يتم اختياره من اداة رفع الملفات UpImg بالكامل يعني الاسم مع الامتداد فلو قمت باختيار صورة اسمها pic1.gif
فان النص الكامل الذي سيتم اسناده للمتغير FPath سيكون بالشكل التالي
C:\Inetpub\wwwroot\ElectronicMall1.0\uploaded\pic1.gif
وهذا يعبر عن مسار الملف الذي سوف نقوم برفعه بعد انتهاء عملية الرفع ووضع الملف في داخل المجلد
نتوقف قليل عند المكتبة IO وتلاحظ اننا في الكود السابق استخدمناها في جلب اسم وامتداد الملف الذي تم اختيارة في اداة رفع الملفات
وهذه مكتبة كامله تتيح لك التحكم بالملفات والمجلدات
في كودنا السابق نلاحظ اننا طلبنا اسم الملف الكامل مع الامتداد للملف الموجود بهذا المسار
UpImg.PostedFile.FileName
وهذه تعيد لنا المسار الكامل للملف الذي تم اختياره من جهازك
فمثلا لو اخترنا من الجهاز ملف pic1.gif
موجود في الدرايف E مباشرة
فان المسار الذي سوف يعود في داخل UpImg.PostedFile.FileName
هو E:\pic1.gif
وباستخدام مكتبة ال IO سوف نقوم بجلب اسم الملف الكامل مع الامتداد للمسار E:\pic1.gif
وبالتالي سوف يعود لنا ب pic1.gif
وهذا مافعلناه بالكود
مكتبة ال IO يمكنك فعل امور كثيره اخرى بها غير جلب اسم الملف وامتداده حيث يمكنك بواسطتها انشاء ملفات او مجلدات او حذف او تغيير اسمائها وكذلك فتح ملفات لقرائتها والكتابة فيها وغيرها من كل مايخطر ببالك من امور التعامل مع الملفات والمجلدات وهنا سوف نستخدم مانحن بحاجة له في عملية الرفع ونترك لك استكشاف باقي امكانيات المكتبة بنفسككود:Dim FPath As String ="C:\Inetpub\wwwroot\ElectronicMall1.0\uploaded\" & IO.Path.GetFileName(UpImg.PostedFile.FileName)
بعد جلب اسم الملف وامتداده نريد التأكد من امرين
1- ان الملف ضمن الامتدادت المسموح برفعها
2- ان الملف ضمن الحجم المسموح رفعه
للتأكد من امتداد الملف نستخدم مكتبة ال IO
الكود التالي سوف يعيد لنا امتداد الملف فقط بدون اسمه مثلا لو كان اسم الملف هو pic1.gif
فان الكود التالي سوف يعيد لنا الامتداد او نوع الملف فقط هكذا .gif
الان يمكننا التحقق من نوع الملف المرفعه بكل اريحيه مثلا نقوم بتخزين امتداد ونوع الملف في متغير نسمية FEx ونقوم بالمقارنه بين الانواع المطلوبة فاذا لم يكن نوع الملف من بين الانواع المسموح رفعها نقوم باخراج رسالة عدم السماح برفع هذا النوع واخراجه من تنفيذ الكود على سبيل المثالكود:IO.Path.GetExtension(FPath)
كود:If FEx <> ".gif" Or FEx <> ".GIF" Then ErrorLabel.Text = "نوع الملف الذي تم اختياره غير مسموح به" Exit Sub End If
الان نريد التأكد من حجم الملف ان كان ضمن الحجم المسموح برفعه والكود التالي سوف يعود لنا يحجم الملف المختار بالبايت
نقوم الان بالتحقق من حجم الملف بالشكال التالي مثلاكود:upimg.PostedFile.InputStream.Length
وهنا منعنا تحميل اي ملف حجمه اكبر من 300 كيلو بايتكود:If UpImg.PostedFile.InputStream.Length > 307200 Then ErrorLabel.Text = "حجم الملف اكبر من الحجم المسموح به" Exit Sub End If
الان نريد التأكد من ان اسم الملف المرفوع غير موجود من قبل في داخل المجلد الذي سوف نقوم برفع الملف داخله لكي لا يحدث تعارض بالاسماء
ففي حالة كان الاسم موجود من قبل نقوم بمنع تحميل الملف ونخرج له رسالة تخبره بان الاسم موجود من قبل
الكود التالي سوف يعود لنا بصح او خطأ
في حالة كان المشار FPath موجود في الموقع من قبل وهو مسار مجلد الملفات مضاف له اسم الملف مع امتداده فسوف يعود بصح Trueكود:IO.File.Exists(FPath)
وان كان غير موجود فسوف يعود بخطأ False
نستخدمه في جملة شرطيه للتحقق من وجود اسم الملف او عدم بالشكل التالي مثلا
كود:If IO.File.Exists(FPath) = True Then ErrorLabel.Text = "اسم الملف موجود من قبل ,قم بتغيير اسم الملف" Exit Sub End If
الان العملية الاخيره هي عملية رفع الملف وتخزينه في داخل مجلد رفع الملفات
وهذا يتم بالكود التالي
بتنفيذ هذا الكود سوف يقوم برفع الملف المختار من الجهاز وتخزينه في داخل المسار الموجود في المتغير FPathكود:UpImg.PostedFile.SaveAs(FPath)
ملاحظة اخيره :-
هذا هو المبدأ العام وانت يمكنك باستخدام مكتبة ال IO التحقق من امور اكثر من اسم الملف او نوعه وحجمه يمكنك اترك لكم اكتشافها بانفسكم على حسب حاجتكم او نشرحها في درس اخر ان شاء الله تعالى
الي هنا ننتهي واي سؤال اقدر اجاوب عليه ان شاء الله مابقصر


رد مع اقتباس

