أعضاء الفريق العربي للبرمجة,,,
السلام عليكم ورحمة الله وبركاته:
أقوم بتطوير محرر نصوص على الويب وإضافة وظيفة تقوم بتحميل الصور مباشرة من الجهاز المحلي للمستخدم إلى السيرفر وذلك وفق الطريقة التالية:
1- عنصر من نوع ملف يتم إنشائه داخل ملف محرر النصوص في js.
2- عندما يقوم المستخدم باختيار الصورة المناسبة فإن هذا العنصر يقوم بالتعامل مع الحدث onChange ويوجه مسار البرنامج للتابع uploadImage الذي يأخذ قيمة متغيرين الأول هو عنصر الملف والثاني فهو محرر النصوص (من أجل تحديد أي محرر نصوص في الصفحة التي تحتوي هذا المحرر سوف تظهر فيه الصورة التي قام المستخدم بتحميلها).
function uploadImage(filelement,rte){
var source = filelement.value;
if(uploadImagePath == null || uploadImagePath == ""){
alert("PLZ Inialize Upload Path.");
return "";
}
if(source != null && source != ""){
var fileTypes=["bmp","gif","png","jpg","jpeg"];
var ext=source.substring(source.lastIndexOf(".")+1,source.length).toLowerCase();
for (var i=0; i<fileTypes.length; i++) if (fileTypes==ext) break;
if (i < fileTypes.length) {
if (window.XMLHttpRequest){// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function(){
if (xmlhttp.readyState==4 && xmlhttp.status==200){
var value = xmlhttp.responseText;
if(value != "Can't upload image" && value != "There is no image" && value != "Path is empty" && value != null && value != ""){
rteCommand(rte, 'InsertImage', value);
}else {
if(value == null || value == ""){
alert("No value returned.");
}else {alert(value);}
}
}
}
xmlhttp.open("POST","../tools/ret/uploadimg.php",true);
xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");
xmlhttp.setRequestHeader('Content-Type','multipart/form-data');
if(document.getElementById("file") != null){
xmlhttp.send("fn="+filelement+"&p="+uploadImagePath);
}else {
alert("File element img is NULL.");
}
}
else {
alert("لن تستطيع تحميل هذا الملف\n:رجاء قم بتحميل الصور ذات الإمتدادات التالية\n\n"+fileTypes.join(", "));
}
}
}أما بخصوص البرنامج المكتوب بلغة php فهو كالتالي:
<?php
$message = "";
if(!isset($_REQUEST['p'])){
$message = "Path is NULL";
}else {
$path = $_REQUEST['p'];
if(isset($_REQUEST['fn'])){
$img_r = $_REQUEST['fn'];
if($img_r['file']['name'] != null && $img_r['fiel']['name'] != ""){
$rand = rand(000,999).$img_r['fiel']['name'];
$docName = $rand;
$docName = str_replace("%", "", $docName);
$docName = str_replace("~", "", $docName);
$target = $path.$docName;
if(!move_uploaded_file($img_r['file']['tmp_name'], $target)) {
$message = "Can't upload image".$target;
}else {$message = $target;}
}else {
$message = "There is no image";
}
}else{
$message ="Image array is null";
}
}
echo $message;
?>أرجو مساعدتي لمعرفة كيف أقوم بإرسال بيانات عنصر الملف حتي يستطيع برنامج php استقبالها كمصفوفة من نوع $_FILES.
ولكم جزيل الشكر
