نظرة سريعة على مجريات يوم سوالف
الفائزون في المسابقة الأصغر لسوالف كاست

 

العودة   سوالف سوفت > قسم تطوير وبرمجة المواقع للمتقدمين > ASP و ASP.NET
المدوّنات البحث مشاركات اليوم اجعل كافة المشاركات مقروءة

رد  
 
LinkBack أدوات الموضوع
عضو نشيط
تاريخ التسجيل: Jun 2006-
#1 (permalink)  
طريقة رفع الملفات في ال 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 التحقق من امور اكثر من اسم الملف او نوعه وحجمه يمكنك اترك لكم اكتشافها بانفسكم على حسب حاجتكم او نشرحها في درس اخر ان شاء الله تعالى


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






__________________
احنا بكل فخر واخلاص باغة باروده ورصاص
وصقور تحب المقناص بجو الأردن عاليه
وفوق الأردن عاليه ........
nothing4u غير متواجد حالياً   قديم 21-05-2007, 10:36 AM
رد مع اقتباس
عضو نشيط جدا
تاريخ التسجيل: Jul 2002-
#2 (permalink)  

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

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

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

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






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

ASP.NET,ASP 3.0

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

عدنا والعود أحمد...
asp2asp غير متواجد حالياً   قديم 21-05-2007, 02:31 PM
رد مع اقتباس
عضو نشيط
تاريخ التسجيل: Jun 2006-
#3 (permalink)  

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

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

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

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






__________________
احنا بكل فخر واخلاص باغة باروده ورصاص
وصقور تحب المقناص بجو الأردن عاليه
وفوق الأردن عاليه ........
nothing4u غير متواجد حالياً   قديم 21-05-2007, 05:35 PM
رد مع اقتباس
عضو نشيط
تاريخ التسجيل: Nov 2002-
#4 (permalink)  

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

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

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

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

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

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

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

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

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

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

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

دمت بود






__________________
مَلفْاتي لتحميل الصور والملفات
تحميل بلا حدودْ، بلا قيودْ

رفعُ المَلفاتْ مجاناً تصل الى 250 MB
Hajer4des غير متواجد حالياً   قديم 09-06-2007, 09:31 AM
رد مع اقتباس
عضو نشيط
تاريخ التسجيل: Jun 2006-
#5 (permalink)  

اقتباس:
المشاركة الأصلية كتبت بواسطة 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

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






__________________
احنا بكل فخر واخلاص باغة باروده ورصاص
وصقور تحب المقناص بجو الأردن عاليه
وفوق الأردن عاليه ........
nothing4u غير متواجد حالياً   قديم 09-06-2007, 08:48 PM
رد مع اقتباس
عضو نشيط
تاريخ التسجيل: Nov 2002-
#6 (permalink)  

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

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


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






__________________
مَلفْاتي لتحميل الصور والملفات
تحميل بلا حدودْ، بلا قيودْ

رفعُ المَلفاتْ مجاناً تصل الى 250 MB
Hajer4des غير متواجد حالياً   قديم 10-06-2007, 10:20 PM
رد مع اقتباس
عضو سوبر نشيط
تاريخ التسجيل: Mar 2000-
#7 (permalink)  

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

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

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

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

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






__________________
قمت بإغلاق مواقعي
من يريد شراء نسخه من جده طرب مراسلتي
r.-f[@]hotmail.com
الثلج غير متواجد حالياً   قديم 12-06-2007, 03:50 PM
رد مع اقتباس
عضو نشيط
تاريخ التسجيل: Jun 2006-
#8 (permalink)  

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

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

عندما قمت بانشا مشروع جديد لكي انفذ مشروعك اعطاني رسالة 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 ظاهره بها ان شاء الله






__________________
احنا بكل فخر واخلاص باغة باروده ورصاص
وصقور تحب المقناص بجو الأردن عاليه
وفوق الأردن عاليه ........
nothing4u غير متواجد حالياً   قديم 12-06-2007, 05:47 PM
رد مع اقتباس
عضو سوبر نشيط
تاريخ التسجيل: Mar 2000-
#9 (permalink)  

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

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

اقتباس:
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






__________________
قمت بإغلاق مواقعي
من يريد شراء نسخه من جده طرب مراسلتي
r.-f[@]hotmail.com
الثلج غير متواجد حالياً   قديم 13-06-2007, 03:40 AM
رد مع اقتباس
عضو نشيط
تاريخ التسجيل: Jun 2006-
#10 (permalink)  

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

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






__________________
احنا بكل فخر واخلاص باغة باروده ورصاص
وصقور تحب المقناص بجو الأردن عاليه
وفوق الأردن عاليه ........
nothing4u غير متواجد حالياً   قديم 13-06-2007, 05:42 PM
رد مع اقتباس
عضو سوبر نشيط
تاريخ التسجيل: Mar 2000-
#11 (permalink)  

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






__________________
قمت بإغلاق مواقعي
من يريد شراء نسخه من جده طرب مراسلتي
r.-f[@]hotmail.com
الثلج غير متواجد حالياً   قديم 14-06-2007, 03:46 AM
رد مع اقتباس
عضو نشيط
تاريخ التسجيل: Sep 2006-
#12 (permalink)  

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






__________________
شبكة النبع الصافي = www.annab3.net
منتديات النبع الصافي = http://www.annab3.net/forum/
مكتبة الدروس و المواعظ = http://www.annab3.net/doros/
مكتبة البرامج و السكريبتات = http://www.annab3.net/pro/
البديل الإسلامي غير متواجد حالياً   قديم 25-08-2007, 02:50 AM
رد مع اقتباس
رد


 

أدوات الموضوع

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

كود [IMG] متاحة
كود HTML معطلة
Trackbacks are متاحة
Pingbacks are متاحة
Refbacks are متاحة


المواضيع المتشابهه
الموضوع كاتب الموضوع المنتدى مشاركات آخر مشاركة
مركز رفع الملفات - النسخة 3.4.5 جريح الهاكات والإضافات 93 22-03-2008 12:48 AM
بدء دورة ASP.NET ( مقدمة عن اللغة ) برمودا ASP و ASP.NET 26 12-12-2007 01:41 AM
:: Arab Mega Upload v 2.0 اروع مركز رفع ملفات الى الان ::: MtRp خدمات البيع والشراء والإعلانات التجارية 5 23-02-2007 09:35 AM
Arab Mega Upload v 20 اروع مركز رفع ملفات الى الان :::::::::: MtRp خدمات البيع والشراء والإعلانات التجارية 26 20-02-2007 03:37 AM
هل يوجد طريقة لرفع الملفات بواسطة الأف تي بي snake_eyes PHP 2 28-03-2006 03:06 PM


الساعة الآن: 10:28 PM بتوقيت المملكة العربية السعودية