منتديات مدينة الاحلام

فيس بوك مدينة الاحلام twitter RSS 

 
 

 

 

معجبو مدينة الاحلام علي الفيس بوك

  #1  
قديم 22 - 07 - 2010, 10:56
php pro غير متصل
..:: من سكان المدينة ::..
 


php pro is on a distinguished road
افتراضي درس التحميل المتعدد للملفات Multi upload










باسم الله الرحمــن الرحيم
السلام عليكم و رحمة الله و بركاته
في برمجة الويب لا بد و أن يأتي يوم سنحتاج فيه إلى برمجة صفحة لتحميل الملفات .. و قد يكون هذا التحميل فردي أو متعدد .. في هذا الإطار سأحاول بحول الله تقديم درس خفيف لطريقة التحميل المتعدد .

1 - إنشاء الفورم FORM و سيكون بال HTML بالطريقة المعتادة ..

من الضروريات هنا تحديد ال enctype في الفورم .. و ما دمنا نود استعماله لتحميل الملفات سنستعمله بهذه الطريقة ..




[PHP]
<form method="post" action="upload.php" enctype="multipart/form-data">
[/PHP]


هنا حددنا طريقة إرسال الكود POST و كذلك ملف الاستقبال upload.php من أجل معالجة الكود ..
أيضاً نعلم أن هذا الفورم يجب أن يضم input لتحديد الملف المراد تحميله عادة نستعمله بهذه الطريقة ..


[PHP]
<input type="file" name="images" />
[/PHP]

هذا بالنسبة للتحميل الأحادي ..
بالنسبة لنا و للتحميل المتعدد .. سنعمل عليها بطريقة الجداول .. يعني ببساطة إضافة [] داخل name فيصبح الكود ..


[PHP]
<input type="file" name="images[]" />
[/PHP]

هنا نفهم أنه من أجل التحميل المتعدد يلزمنا إعادة هذا الحقل مرات عديدة حسب الحاجة .
و من أجل إرسال الكود لصفحة التحرير يلزمنا أيقونة الإرسال ..


[PHP]
<input type="submit" name="submit" value="submit" />

[/PHP]


نحصل بالتالي على كود الإرسال .. و سنبدأ بإرسال 3 ملفات في نفس اللحظة ..


[PHP]
<form method="post" action="upload.php" enctype="multipart/form-data">
<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]
<?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]
move_uploaded_file($_FILES['images']['tmp_name'], $path . $_FILES['images']['name']);
[/PHP]

[PHP]
copy($_FILES['images']['tmp_name'], $path . $_FILES['images']['name']);

[/PHP]

الشطر الأول : الإسم المؤقت للملف
الشطر الثاني : المجلد و اسم الملف ..

أعتقد أننا في الرنين الآن (بين قوسين عبارة خاصة بي -- اللي فهمها يجاوبني) ..

المهم أننا وصلنا الآن إلى طريقة عمل ملف المعالجة



[PHP]
$path = dirname(__file__) . '/upload/';
move_uploaded_file($_FILES['images']['tmp_name'], $path . $_FILES['images']['name']);

[/PHP]


لحظة أخي جلال : جربت الكود و يقوم فقط بإدخال ملف واحد ..
جلال : طبيعي أخي الكريم أولاً لأننا لم ننتهي بعد، ثانياً و كتفسير بسيط فإن الكود المعالج يجب أن يعالج الملفات واحداً تلو الآخر .. و نحن لم نمكنه من ذلك بعد ..
لذلك يلزمنا حلقة تكرار for ..
فيصبح الكود السابق


[PHP]
<?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]
<?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]
..:: زائر مقيم ::..
 

vpsvalley is on a distinguished road
Lightbulb رد: درس التحميل المتعدد للملفات Multi upload

درس جميل جدا


vpsvalley غير متصل   رد مع اقتباس
قديم 25 - 07 - 2010, 22:50   رقم المشاركة : [3]
..:: من سكان المدينة ::..
الصورة الرمزية قاهر الاعداء
 

قاهر الاعداء is on a distinguished road
افتراضي رد: درس التحميل المتعدد للملفات Multi upload

مـ ـشـ ـكـ ـور اخـ ـي الـ ـكـ ـريـ ـم وجـ ـزك الـ ـلـ ـة خـ ـيـ ـراً وتـ ـقـ ـبـ ـل مـ ـرـ ـوـ ـري


قاهر الاعداء غير متصل   رد مع اقتباس
قديم 25 - 07 - 2010, 23:31   رقم المشاركة : [4]
نائب المشرف العام
 

السامي تم تعطيل التقييم
افتراضي رد: درس التحميل المتعدد للملفات Multi upload

درس رائع كنت ابحث عن اكواده منذ فتره مشكور اخي الكريم


السامي غير متصل   رد مع اقتباس
إضافة رد

مواقع النشر (المفضلة)


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

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


المواضيع المتشابهه
الموضوع كاتب الموضوع المنتدى مشاركات آخر مشاركة
موسوعة البرامج الهامة تتكون من اكثر 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


الساعة الآن 15:36.

    Powered by vBulletin Version 3.8.7
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd
ترقية وتطوير: مجموعة الدعم العربى
  

SEO by vBSEO