كود رفع الملفات إلى السيرفر مع إبقاء اسم الملف
لسلام عليكم و رحمة الله و بركاته
الموضوع ينقسم إلى جزئين : XHTML and PHP
XHTML : و هو الجزء الخاص بالفورم الذى سيظهر للزائر او صاحب الموقع ( حسب
مكان تواجده ) ليتمكن من اختيار الملف و رفعه ، و هذا فورم طبيعى يختلف فى
شئين فقط :
1 - from Tag : يجب ان يأخذ Attribute يسمى enctype و يأخد القيمة
multipart/form-data
2 - input Tag : يكون فيه الـ type يأخذ القيمة
file
ليكون الفورم مشابه لهذا :
PHP : و هو الجزء الخاص بمعالجة رفع الملف و هذا الجزء له عدة مراحل :
1 - التأكد من ان الملف تم رفعه بنجاح و ان الملف مرفوع عن طريق HTTP POST.
2 - التأكد من نوع الملف المرفوع مثل jpg, png,zip, rar ........ . ان كان
من بين الانواع المسموحة أم لا
3 - التأكد من حجم الملف ان كان يتعدى الحجم المسموح ام لا
4 - نقل الملف من الملفات المؤقتة الى الماكن الذى تود حفظ الملفات
المرفوعة به و تحديد اسمه الجديد
و لتنفيذ هذه الخطوات لابد لك من معرفة الاتى :
أ - بيانات الملف المرفوع تكون موجودة بالمصفوفة $_FILES و ليس $_POST و
تكون على الشكل التالى :
Array (
[name] => Original File Name
[type] => File Type
[tmp_name] => File Absolute Path On Server
[error] =>Errors
[size] => File Size In Bytes
)
نبدأ فى التنفيذ :
اولا نحدد حجم الملفات المسموح بها و نوعها و المكان الذى سنحتفظ بها فيه :
//Max File Size In Kilo Bytes
$configs['maxSize'] = 1024;
//Allowed Files Types
$configs['ext'] = array('jpeg','jpg','gif','png','bmp');
//Where To Save Uploaded Files
$configs['uploadPath'] = '/upload';
?>
ثانيا نتأكد من ان الملف تم رفعه و الملف مرفوع عن طريق HTTP POST
//Max File Size In Bytes
$configs['maxSize'] = 1024;
//Allowed Files Types
$configs['ext'] = array('jpeg','jpg','gif','png','bmp');
//Where To Save Uploaded Files
$configs['uploadPath'] = '/upload';
//Check If File Uploaded
if(isset($_FILES['myFile']) && is_uploaded_file($_FILES['myFile']['tmp_name'])){
}
?>
هنا myFile تعبر عن قيمة الـ name Attribute فى الـ XHTML Form
ثالثا نتأكد من ان نوع الملف المرفوع مسموح
//Max File Size In Bytes
$configs['maxSize'] = 1024;
//Allowed Files Types
$configs['ext'] = array('jpeg','jpg','gif','png','bmp');
//Where To Save Uploaded Files
$configs['uploadPath'] = '/upload';
//Check If File Uploaded
if(isset($_FILES['myFile']) && is_uploaded_file($_FILES['myFile']['tmp_name'])){
//Check File Type
if(in_array(end(explode('.',strtolower($_FILES['myFile']['name']))),$configs['ext']))
{
}
}
?>
وفى حالة لم يكن النوع مسموح به يوقف عمل السكريبت و اظهار الخطأ للزائر :
//Max File Size In Bytes
$configs['maxSize'] = 1024;
//Allowed Files Types
$configs['ext'] = array('jpeg','jpg','gif','png','bmp');
//Where To Save Uploaded Files
$configs['uploadPath'] = '/upload';
//Check If File Uploaded
if(isset($_FILES['myFile']) && is_uploaded_file($_FILES['myFile']['tmp_name'])){
//Check File Type
if(in_array(end(explode('.',strtolower($_FILES['myFile']['name']))),$configs['ext']))
{
}else {
echo '
[ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط]';
die('File Type Not Allowed');
}
}
?>
ثم التأكد من الحجم و فى حالة انه اكبر من المسموح يظهر الخطأ للمستخدم :
//Max File Size In Bytes
$configs['maxSize'] = 100;
//Allowed Files Types
$configs['ext'] = array('jpeg','jpg','gif','png','bmp');
//Where To Save Uploaded Files
$configs['uploadPath'] = 'upload';
//Check If File Uploaded
if(isset($_FILES['myFile']) && is_uploaded_file($_FILES['myFile']['tmp_name'])){
//Check File Type
if(in_array(end(explode('.',strtolower($_FILES['myFile']['name']))),$configs['ext']))
{
if(($_FILES['myFile']['size']/1024) <= $configs['maxSize'])
{
}else {
echo '
';
die("File Is Larger Than Allowed Size");
}
}else {
echo '
';
die('File Type Not Allowed');
}
}
?>
فى النهاية اذا كان نوعه مسموح به و الحجم ايضا يتم نقله الى المكن المخصص
للاحتفاظ به ليكون فى النهاية :
//Max File Size In Bytes
$configs['maxSize'] = 100;
//Allowed Files Types
$configs['ext'] = array('jpeg','jpg','gif','png','bmp');
//Where To Save Uploaded Files
$configs['uploadPath'] = 'upload';
//Check If File Uploaded
if(isset($_FILES['myFile']) && is_uploaded_file($_FILES['myFile']['tmp_name'])){
//Check File Type
if(in_array(end(explode('.',strtolower($_FILES['myFile']['name']))),$configs['ext']))
{
if(($_FILES['myFile']['size']/1024) <= $configs['maxSize'])
{
move_uploaded_file($_FILES['myFile']['tmp_name'],realpath($configs['uploadPath']).'/'.$_FILES['myFile']['name']);
echo 'File : '.$_FILES['myFile']['name'].' Uploaded .';
}else {
echo
';
die("File Is Larger Than Allowed Size");
}
}else {
echo '
';
die('File Type Not Allowed');
}
}
?>
ما هذا الا مثال يمكن تغيره كما تريده ، ان كانت هناك اى جزئية غير واضحة ،
اخبرنا بما هو غير موضح
المصدر // منتديات الفريق العربى للبرمجة
[ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط]