|
|
#1
| ||||||
| ||||||
درس التحميل المتعدد للملفات Multi upload باسم الله الرحمــن الرحيم <form method="post" action="upload.php" enctype="multipart/form-data"> السلام عليكم و رحمة الله و بركاته في برمجة الويب لا بد و أن يأتي يوم سنحتاج فيه إلى برمجة صفحة لتحميل الملفات .. و قد يكون هذا التحميل فردي أو متعدد .. في هذا الإطار سأحاول بحول الله تقديم درس خفيف لطريقة التحميل المتعدد . 1 - إنشاء الفورم FORM و سيكون بال HTML بالطريقة المعتادة .. من الضروريات هنا تحديد ال enctype في الفورم .. و ما دمنا نود استعماله لتحميل الملفات سنستعمله بهذه الطريقة .. [PHP] [/PHP] هنا حددنا طريقة إرسال الكود POST و كذلك ملف الاستقبال upload.php من أجل معالجة الكود .. أيضاً نعلم أن هذا الفورم يجب أن يضم input لتحديد الملف المراد تحميله عادة نستعمله بهذه الطريقة .. [PHP] [/PHP] <input type="file" name="images[]" /> هذا بالنسبة للتحميل الأحادي .. بالنسبة لنا و للتحميل المتعدد .. سنعمل عليها بطريقة الجداول .. يعني ببساطة إضافة [] داخل name فيصبح الكود .. [PHP] [/PHP] هنا نفهم أنه من أجل التحميل المتعدد يلزمنا إعادة هذا الحقل مرات عديدة حسب الحاجة . و من أجل إرسال الكود لصفحة التحرير يلزمنا أيقونة الإرسال .. [PHP] [/PHP] نحصل بالتالي على كود الإرسال .. و سنبدأ بإرسال 3 ملفات في نفس اللحظة .. [PHP] <input type="file" name="images[]" /> <input type="file" name="images[]" /> <input type="file" name="images[]" /> <input type="submit" name="submit" value="submit" /> </form> [/PHP] لمن لا يحب التكرار في أكواده يمكن استعمال حلقة التكرارfor الفكرة ببساطة هنا : يمكننا تحديد عدد مرات التكرار بواسطة متغيرمعين .. ثم عمل حلقة التكرار بالطريقة المعتادة من أجل تكرار حقل file عدد مرات المتغير .. [PHP] $nbr_max = 3; echo '<hr /><form method="post" action="upload.php" enctype="multipart/form-data">'; for($i = 1;$i <= $nbr_max;$i++) { echo'Numéro '.$i.' : <input type="file" name="images[]" /><br />'; } echo' <input type="submit" name="submit" value="submit" /> </form>'; ?> [/PHP] هنا انتهينا من كود الإرسال html 2 - معالجة الكود في الحقيقة فإن المهم هنا هو تخزين الملف .. و يتم ذلك في سطرين .. السطر الأول : رابط مجلد التخزين السطر الثاني : دالة التخزين رابط المجلد يلزمنا أولاً إنشاء مجلد جديد نسميه مثلاً upload .. دالة التخزين .. بالنسبة لي أستعمل إحدى الدالتان اللتان تمكنان من التخزين الأولى : move_uploaded_file الثانية : copy الفرق بينهما أن الأولى تقوم بالتأكد من أن الملف محمل بطريقة HTTP POST و تقوم بنقله في المجلد .. الثانية تقوم بعمل نسخ للملف و نقله إلى مجلد التخزين هنا إذا كان الملف موجود فإنها تقوم بحذفه و نقل الجديد .. طريقة استعمالهما بالنسبة لنا .. [PHP] [/PHP] copy($_FILES['images']['tmp_name'], $path . $_FILES['images']['name']); [PHP] [/PHP] الشطر الأول : الإسم المؤقت للملف الشطر الثاني : المجلد و اسم الملف .. أعتقد أننا في الرنين الآن (بين قوسين عبارة خاصة بي -- اللي فهمها يجاوبني) .. المهم أننا وصلنا الآن إلى طريقة عمل ملف المعالجة [PHP] move_uploaded_file($_FILES['images']['tmp_name'], $path . $_FILES['images']['name']); [/PHP] لحظة أخي جلال : جربت الكود و يقوم فقط بإدخال ملف واحد .. جلال : طبيعي أخي الكريم أولاً لأننا لم ننتهي بعد، ثانياً و كتفسير بسيط فإن الكود المعالج يجب أن يعالج الملفات واحداً تلو الآخر .. و نحن لم نمكنه من ذلك بعد .. لذلك يلزمنا حلقة تكرار for .. فيصبح الكود السابق [PHP] $path = dirname(__file__) . '/upload/'; for ($i = 0; $i < count($_FILES['images']['name']); $i++) { move_uploaded_file($_FILES['images']['tmp_name'][$i], $path . $_FILES['images']['name'][$i]); } ?> [/PHP] count لحساب عدد الملفات المحملة .. ما تبقى الآن هو العمل على الأخطاء و تخصيص السكريبت .. مثلاً أود أن أحمل فقط الملفات بصيغة gif فما علي إلا طلب ذلك باستعمال أدات الشرط if .. أو التأكد من الكليك على submit او وجود ملف محمل .. 3 - الكود كاملاً صالح لجميع أنواع الملفات .. سأضيف هنا حساب عدد الملفات المحملة و كذلك أسماء الملفات .. من أجل تخصيص تحميل ملفات معينة [PHP] $nbr_uploaded =0; $files_uploded = array(); if(isset($_POST['submit'])) { $path = dirname(__file__) . '/upload/'; for ($i = 0; $i < count($_FILES['images']['name']); $i++) { if($_FILES['images']['name'][$i] != '') { move_uploaded_file($_FILES['images']['tmp_name'][$i], $path . $_FILES['images']['name'][$i]); $files_uploded[] = $_FILES['images']['name'][$i]; $nbr_uploaded++; } } echo ' Nombre de fichiers : '. $nbr_uploaded .'<br /> Les fichiers : <br />'. implode('<br />', $files_uploded); } $nbr_max = 3; echo '<hr /><form method="post" action="upload2.php" enctype="multipart/form-data">'; for($i = 1;$i <= $nbr_max;$i++) { echo'Numéro '.$i.' : <input type="file" name="images[]" /><br />'; } echo' <input type="submit" name="submit" value="submit" /> </form>'; ?> [/PHP] 4 - تطوير السكريبت - يمكن إضافة عرض الملفات المحملة . - إمكانية اختيار عدد الملفات المراد تحميلها عن طريق عمل input text أو select option و اختيار العدد المراد تحميله - إمكانيات أخرى من طرفكم . أعلم أني أطلت كثيراً بالموضوع و لكن فقط لتفادي الأسئلة الكثيرة حول أمور تتعلق بالكود . الدرس منقول المصدر: منتديات مدينة الاحلام ]vs hgjpldg hglju]] gglgthj Multi upload |
25 - 07 - 2010, 22:49 | رقم المشاركة : [2] | |||
| رد: درس التحميل المتعدد للملفات Multi upload درس جميل جدا | |||
25 - 07 - 2010, 22:50 | رقم المشاركة : [3] | ||
| رد: درس التحميل المتعدد للملفات Multi upload مـ ـشـ ـكـ ـور اخـ ـي الـ ـكـ ـريـ ـم وجـ ـزك الـ ـلـ ـة خـ ـيـ ـراً وتـ ـقـ ـبـ ـل مـ ـرـ ـوـ ـري | ||
25 - 07 - 2010, 23:31 | رقم المشاركة : [4] | |||
| رد: درس التحميل المتعدد للملفات Multi upload درس رائع كنت ابحث عن اكواده منذ فتره مشكور اخي الكريم | |||
مواقع النشر (المفضلة) |
| |
المواضيع المتشابهه | ||||
الموضوع | كاتب الموضوع | المنتدى | مشاركات | آخر مشاركة |
موسوعة البرامج الهامة تتكون من اكثر 100 برنامج لا غنى عنهم فى اى جهاز بالكراكات | pmposoft | قسم البرامج , برامج مجانية | 21 | 09 - 03 - 2011 13:57 |
اكبر مكتبة العاب لل psp 2010 على روابط مباشره | Gamer man | قسم العاب PSP | 227 | 25 - 01 - 2011 15:18 |
أكبر مكتبة ترينرات العاب مرفوعة على موقع Zshare | البرق | قسم الألعاب الإلكترونية | 135 | 25 - 08 - 2010 09:08 |
جميع برامج االجوال هنا فقط اكبر مكتبة برامج | prnsas | برامج الجوال , ايفون iphone , بلاك بيري blackberry | 6 | 11 - 04 - 2010 15:54 |
مكتبة نغمات بسيطة أرجو أن تنال إعجابكم حسون سبعين | حسون سبعين | نغمات - بلوتوث - مقاطع و فيديو الجوال , بلاك بيري و ايفون | 3 | 11 - 03 - 2010 03:41 |
Powered by vBulletin Version 3.8.7 Copyright ©2000 - 2024, Jelsoft Enterprises Ltd ترقية وتطوير: مجموعة الدعم العربى |