النتائج 1 إلى 12 من 12

الموضوع: طريقة رفع الملفات في ال asp.net

  1. #1

    تاريخ التسجيل
    Jun 2006
    المشاركات
    1,370

    طريقة رفع الملفات في ال asp.net



    السلام عليكم ورحمة الله وبركاته

    طريقة رفع الملفات في ال asp.net
    والتحقق من الانواع والحجم واي تفاصيل اخرى

    الادوات المستخدمه في المقال هي اداة
    FileUpload1
    وادارة زر Button

    نقوم بوضع الاداتين في الصفحة وبعد هذا داخل حدث النقر على الزر button
    نقوم بكتابة الكود الخاص بعملية رفع الملف الذي تم اختيار من الاداة FileUpload1
    في داخل مجلد فرعي في مجلد المشروع الرئيسي

    لنفرض ان الاسم البرمجي للادة FileUpload1 هو UpImg

    في البداية نتحقق من ان المستخدم قد قام بختيار ملف لرفعه

    كود:
    If UpImg.PostedFile.FileName = Nothing Then
                ErrorLabel.Text = "لم يتم اختيار ملف لرفعه"
                Exit Sub
            End If
    في حالة لم يتم اختيار ملف لرفعه في داخل الاداة UpImg سوف نطبع له في داخل اداة ليبل سميناها ErrorLabel راسلة تقول انه لم يتم اختيار ملف لرفعه وبعد هذا نخرجه من تنفيذ بقية الكود المكتوب في حدث النقر على زر التحميل

    اذا قام المستخدم باختيار ملف لتحميله في داخل اداة اختيار الملفات فان الجملة الشرطيه اعلاه لن تتحقق وبالتالي فانه لن يدخل لكود الجملة الشرطيه ولن يقوم بطباعة رسالة الخطأ ولن يقوم باخراجه من تنفيذ بقية الكود ,,, يعني سوف يستمر في تنفيذ الكود

    الان نقوم بتعريف متغير نسند له المسار الذي سوف يتم تخزين الملف المختار لرفعه فيه مثلا هكذا

    كود:
    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
    وهذا مافعلناه بالكود

    كود:
    Dim FPath As String ="C:\Inetpub\wwwroot\ElectronicMall1.0\uploaded\" & IO.Path.GetFileName(UpImg.PostedFile.FileName)
    مكتبة ال IO يمكنك فعل امور كثيره اخرى بها غير جلب اسم الملف وامتداده حيث يمكنك بواسطتها انشاء ملفات او مجلدات او حذف او تغيير اسمائها وكذلك فتح ملفات لقرائتها والكتابة فيها وغيرها من كل مايخطر ببالك من امور التعامل مع الملفات والمجلدات وهنا سوف نستخدم مانحن بحاجة له في عملية الرفع ونترك لك استكشاف باقي امكانيات المكتبة بنفسك

    بعد جلب اسم الملف وامتداده نريد التأكد من امرين

    1- ان الملف ضمن الامتدادت المسموح برفعها
    2- ان الملف ضمن الحجم المسموح رفعه

    للتأكد من امتداد الملف نستخدم مكتبة ال IO

    الكود التالي سوف يعيد لنا امتداد الملف فقط بدون اسمه مثلا لو كان اسم الملف هو pic1.gif
    فان الكود التالي سوف يعيد لنا الامتداد او نوع الملف فقط هكذا .gif

    كود:
    IO.Path.GetExtension(FPath)
    الان يمكننا التحقق من نوع الملف المرفعه بكل اريحيه مثلا نقوم بتخزين امتداد ونوع الملف في متغير نسمية FEx ونقوم بالمقارنه بين الانواع المطلوبة فاذا لم يكن نوع الملف من بين الانواع المسموح رفعها نقوم باخراج رسالة عدم السماح برفع هذا النوع واخراجه من تنفيذ الكود على سبيل المثال

    كود:
    If FEx <> ".gif" Or FEx <> ".GIF" Then
                ErrorLabel.Text = "نوع الملف الذي تم اختياره غير مسموح به"
                Exit Sub
            End If

    الان نريد التأكد من حجم الملف ان كان ضمن الحجم المسموح برفعه والكود التالي سوف يعود لنا يحجم الملف المختار بالبايت

    كود:
    upimg.PostedFile.InputStream.Length
    نقوم الان بالتحقق من حجم الملف بالشكال التالي مثلا

    كود:
    If UpImg.PostedFile.InputStream.Length > 307200 Then
                ErrorLabel.Text = "حجم الملف اكبر من الحجم المسموح به"
                Exit Sub
            End If
    وهنا منعنا تحميل اي ملف حجمه اكبر من 300 كيلو بايت


    الان نريد التأكد من ان اسم الملف المرفوع غير موجود من قبل في داخل المجلد الذي سوف نقوم برفع الملف داخله لكي لا يحدث تعارض بالاسماء
    ففي حالة كان الاسم موجود من قبل نقوم بمنع تحميل الملف ونخرج له رسالة تخبره بان الاسم موجود من قبل

    الكود التالي سوف يعود لنا بصح او خطأ

    كود:
    IO.File.Exists(FPath)
    في حالة كان المشار FPath موجود في الموقع من قبل وهو مسار مجلد الملفات مضاف له اسم الملف مع امتداده فسوف يعود بصح True
    وان كان غير موجود فسوف يعود بخطأ False

    نستخدمه في جملة شرطيه للتحقق من وجود اسم الملف او عدم بالشكل التالي مثلا

    كود:
    If IO.File.Exists(FPath) = True Then
                ErrorLabel.Text = "اسم الملف موجود من قبل ,قم بتغيير اسم الملف"
                Exit Sub
            End If

    الان العملية الاخيره هي عملية رفع الملف وتخزينه في داخل مجلد رفع الملفات

    وهذا يتم بالكود التالي

    كود:
    UpImg.PostedFile.SaveAs(FPath)
    بتنفيذ هذا الكود سوف يقوم برفع الملف المختار من الجهاز وتخزينه في داخل المسار الموجود في المتغير FPath


    ملاحظة اخيره :-
    هذا هو المبدأ العام وانت يمكنك باستخدام مكتبة ال IO التحقق من امور اكثر من اسم الملف او نوعه وحجمه يمكنك اترك لكم اكتشافها بانفسكم على حسب حاجتكم او نشرحها في درس اخر ان شاء الله تعالى


    الي هنا ننتهي واي سؤال اقدر اجاوب عليه ان شاء الله مابقصر





    __________________
    @_@


  2. #2
    عضو نشيط جدا
    تاريخ التسجيل
    Jul 2002
    المشاركات
    534


    ماشاء الله تبارك الله ..

    درس (كامل الدسم) ونحن بالكاد نستوعب (قليل الدسم)

    إن شاء الله حينما أتفرغ أعود لتنفيذ هذا الدرس الرائع..

    ألف شكر أخي أحمد ..





    __________________
    بداية للمشاريع التجارية

    ASP.NET,ASP 3.0

    المدونة الشخصية : asp2asp.com

    عدنا والعود أحمد...

  3. #3

    تاريخ التسجيل
    Jun 2006
    المشاركات
    1,370


    اقتباس المشاركة الأصلية كتبت بواسطة asp2asp
    ماشاء الله تبارك الله ..

    درس (كامل الدسم) ونحن بالكاد نستوعب (قليل الدسم)

    إن شاء الله حينما أتفرغ أعود لتنفيذ هذا الدرس الرائع..

    ألف شكر أخي أحمد ..
    بارك الله فيك اخوي وان شاء الله ان تكون به الفائده المرجوه





    __________________
    @_@

  4. #4
    عضو نشيط
    تاريخ التسجيل
    Nov 2002
    المشاركات
    184


    اولاً وعليكم السلام ورحمة اله وبركاته

    يعطيك ألف عافية أخوي nothing4u

    بصراحة درس ولا أروع .. بسيط من ناحية الشرح .. ولكن كما قال الاخ asp2asp من النوع ثقيل الدسم

    اذا تكرمت هل لي بسؤال ..؟

    الدالة
    كود:
    IO.Path.GetExtension(FPath)
    سوف تعيد لنا الامتداد او نوع الملف فقط هكذا .gif .. كما تفضلت به

    سؤالي هل الدالة هذه تستخرج نوع الملف من محتوياته ام من الامتداد ؟
    بمعنى

    لو كان لدي الملف (something.php) وقمت بتغيره الى something.php.gif

    وحاولت رفعه باستخدام هذا السكربت
    هل ستعطيني الدالة ان إمتداد الملف هو gif (المزيف) ام الحقيقي (php) ؟

    وماهو الحال لو قمنا بتزييف الملف (something.php) ليصبح (something.gif) كيف ستكون النتيجة وكيف سيتم التعامل معه

    شاكر لك استاذي ماتقدمه للقسم من مجهود ..

    أتمنى أن تكون الاسئلة خفيفة ..

    دمت بود





    __________________
    سَوالف سوْفت.. ألفْ شكر
    دمتِ رمزاً لـ سمَو التعَامل

  5. #5

    تاريخ التسجيل
    Jun 2006
    المشاركات
    1,370


    اقتباس المشاركة الأصلية كتبت بواسطة Hajer4des
    اولاً وعليكم السلام ورحمة اله وبركاته

    يعطيك ألف عافية أخوي nothing4u

    بصراحة درس ولا أروع .. بسيط من ناحية الشرح .. ولكن كما قال الاخ asp2asp من النوع ثقيل الدسم

    اذا تكرمت هل لي بسؤال ..؟

    الدالة
    كود:
    IO.Path.GetExtension(FPath)
    سوف تعيد لنا الامتداد او نوع الملف فقط هكذا .gif .. كما تفضلت به

    سؤالي هل الدالة هذه تستخرج نوع الملف من محتوياته ام من الامتداد ؟
    بمعنى

    لو كان لدي الملف (something.php) وقمت بتغيره الى something.php.gif

    وحاولت رفعه باستخدام هذا السكربت
    هل ستعطيني الدالة ان إمتداد الملف هو gif (المزيف) ام الحقيقي (php) ؟

    وماهو الحال لو قمنا بتزييف الملف (something.php) ليصبح (something.gif) كيف ستكون النتيجة وكيف سيتم التعامل معه

    شاكر لك استاذي ماتقدمه للقسم من مجهود ..

    أتمنى أن تكون الاسئلة خفيفة ..

    دمت بود

    اهلا اخي
    بخصوص سؤالك نعم سوف ينجح بالتحايل على عملية الرفع وسوف يقوم برفع الملف الي يكون اسمه مثلا file.php.gif

    لكن اثناء طلب تصفح الملف لن يتم عرضه في حالة طلبت file.php.gif او طلبت file.php

    ان شاء الله سوف اقوم بكتابة درس اخر فيه طريقة منع التحايل على عملية الرفع بهذه الطريقة





    __________________
    @_@

  6. #6
    عضو نشيط
    تاريخ التسجيل
    Nov 2002
    المشاركات
    184


    شكرا لك أخي ع تجاوبك

    بدأت افكر جديا في التحويل من php إلى asp.net


    بارك الله فيك وكتب لك الاجر





    __________________
    سَوالف سوْفت.. ألفْ شكر
    دمتِ رمزاً لـ سمَو التعَامل

  7. #7
    عضو سوبر نشيط
    تاريخ التسجيل
    Mar 2000
    المشاركات
    762


    اخي العزيز احمد تواجهني مشكله دائماً عند المحاولة في رفع الملفات

    لدي مشروع سبق ونفذته في رفع الملفات وهو يعمل بصورة جيده

    عندما قمت بانشا مشروع جديد لكي انفذ مشروعك اعطاني رسالة access denid

    فقمت باستيراد مشروعي اللذي يعمل وكانت نفس النتيجة access denid
    فما الحل برايك

    دائماً تواجهني واتعذب في حلها





    __________________
    Eng.Fedail
    Computer and Electronics Engineer

  8. #8

    تاريخ التسجيل
    Jun 2006
    المشاركات
    1,370


    اقتباس المشاركة الأصلية كتبت بواسطة الثلج
    اخي العزيز احمد تواجهني مشكله دائماً عند المحاولة في رفع الملفات

    لدي مشروع سبق ونفذته في رفع الملفات وهو يعمل بصورة جيده

    عندما قمت بانشا مشروع جديد لكي انفذ مشروعك اعطاني رسالة access denid

    فقمت باستيراد مشروعي اللذي يعمل وكانت نفس النتيجة access denid
    فما الحل برايك

    دائماً تواجهني واتعذب في حلها
    هلا اخوي الثلج
    هذا لان نفس مجلد الي تريد رفع الملف داخله لا يملك صلاحيات كافيه للقيام بالعملية
    روح بالزر اليمين على المجلد واختار خضائص Properties
    بعدين اختار التبويب Security
    بعدين اضغط على Add
    اكتب في الصندوق Everyone
    وبعدين OK
    بعد هذا ترجع للشاشه تبعت ال Security
    اختار المستخدم Everyone
    ومن تحت اعمل صح على ال Allow لكل الخيارات
    اذا ما ضبط اعمل نفس العملية للمجلد الي مجلد رفع الملفات موجود داخله

    في حالة ان اخترت Properties
    وما ظهر عندك التبويب Security
    روح على Folder Options من القائمة View الي في شريط القوائم اعلى شاشة المجلد
    ومن ال Folder Option اختار View
    وانزل الي اخر الشاشة تقريبا وشيل اشارة الصح عن الخيار
    Use simple file sharing

    وارجع للخصائص رح تلاقي ان ال Securtiy ظاهره بها ان شاء الله





    __________________
    @_@

  9. #9
    عضو سوبر نشيط
    تاريخ التسجيل
    Mar 2000
    المشاركات
    762


    جزاك الله خير وأخيراً أرتحت من هالموضوع

    نفذت المشروع مع بعض التعديلات

    Protected Sub btnup_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnup.Click
    lblerro.Text = Nothing

    If upimg.PostedFile.FileName = Nothing Then
    lblerro.Text = "Chose Your File"
    Exit Sub
    End If

    Dim path As String = Server.MapPath("file") & "\" & IO.Path.GetFileName(upimg.PostedFile.FileName)



    If upimg.PostedFile.InputStream.Length > 1000000 Then
    lblerro.Text = "Your File is so Big"
    Exit Sub
    End If

    If IO.Path.GetExtension(path) = ".PHP" Or IO.Path.GetExtension(path) = ".php" Then
    lblerro.Text = "you file is no supported"
    Exit Sub
    End If

    If IO.File.Exists(path) = True Then
    Dim rname As String = System.Guid.NewGuid.ToString & IO.Path.GetFileName(upimg.PostedFile.FileName)

    path = Server.MapPath("file") & "\" & rname
    End If

    upimg.PostedFile.SaveAs(path)



    End Sub






    __________________
    Eng.Fedail
    Computer and Electronics Engineer

  10. #10

    تاريخ التسجيل
    Jun 2006
    المشاركات
    1,370


    اقتباس المشاركة الأصلية كتبت بواسطة الثلج
    جزاك الله خير وأخيراً أرتحت من هالموضوع

    نفذت المشروع مع بعض التعديلات
    الحمد لله
    بالتوفيق اخي الثلج والكود عليه تعديلات جميله الله يوفقك





    __________________
    @_@

  11. #11
    عضو سوبر نشيط
    تاريخ التسجيل
    Mar 2000
    المشاركات
    762


    شكراً لك اخي احمد





    __________________
    Eng.Fedail
    Computer and Electronics Engineer



  12. ماشاء الله عليك أخي الحبيب ... والله استفدت الكثير من هذا الدرس القيم ... جعله الله لك في ميزان حسناتك





    __________________
    شبكة النبع الصافي = www.annab3.net
    منتديات النبع الصافي = http://www.annab3.net/forum/
    مكتبة الدروس و المواعظ = http://www.annab3.net/doros/
    مكتبة البرامج و السكريبتات = http://www.annab3.net/pro/





ضوابط المشاركة

  • لا تستطيع إضافة مواضيع جديدة
  • لا تستطيع الرد على المواضيع
  • لا تستطيع إرفاق ملفات
  • لا تستطيع تعديل مشاركاتك
  •  

أضف موقعك هنا| اخبار السيارات | حراج | شقق للايجار في الكويت | بيوت للبيع في الكويت | دليل الكويت العقاري | مقروء | شركة كشف تسربات المياه | شركة عزل اسطح بالرياض | عزل فوم بالرياض| عزل اسطح بالرياض | كشف تسربات المياة بالرياض | شركة عزل اسطح بالرياض