กำลังพยายามใช้วิธีง่ายๆ ในการอัพโหลดรูปภาพไปยังเซิร์ฟเวอร์ส่วนหลังโดยใช้ javascript และ PHP เท่านั้น (ไม่มี AJAX) ฉันได้ตัดสินใจลองผนวกข้อมูล .files[0] จากอินพุตไปยัง FormData เพื่อส่งพร้อมกับ POST
ฉันไม่ต้องการใช้แบบฟอร์มส่งและต้องการใช้ httpRequest เพื่อรับข้อความผ่าน/ไม่ผ่าน เนื่องจากสิ่งอื่นๆ จะต้องดำเนินการในหน้าเดียวกันหลังจากอัปโหลดรูปภาพ/ไฟล์แล้ว
ถ้าเป็นไปได้ ใครช่วยกรุณาระบุวิธีการส่งออบเจ็กต์ข้อมูลผ่านพารามิเตอร์ httpRequest ให้ฉันหน่อยได้ไหม เมื่อถึงส่วนหลังแล้ว ฉันสามารถจัดการมันได้ดี แต่ฉันไม่สามารถหาวิธีส่งมันที่ทำงานผ่านวิธีที่ไม่ใช่ AJAX ได้
HTML:
File Location: <br>
<input type='File' name='addNewMediaFileLocation' id='addNewMediaFileLocation' class='addFileText'><br>
Media Type: <select id='addFileFromLocalTypeSelect' class='addFileSelect>
<option>....</option></select>
<input type='button' class='profileButton' id='addMediaFromLocalButton' value='Upload' onclick="uploadMediaFromLocal('$ComicName', '$alias');"
JAVASCRIPT แก้ไข - เพิ่ม getxml()
function getxml()
{
if (window.XMLHttpRequest)
{
xmlhttp = new XMLHttpRequest();
}
else
{
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
return xmlhttp;
}
function uploadMediaFromLocal(ComicName, UploadedBy)
{
var Type = document.getElementById("addFileFromLocalTypeSelect").value;
var file = document.getElementById('addNewMediaFileLocation').files[0];
var fd = new FormData();
fd.append("uploadedFile", file);
xmlhttp = getxml();
xmlhttp.open("POST", "php/actions.php?F=addMediaFromLocal" + "&Type="+Type, true);
xmlhttp.onreadystatechange = function()
{
if(xmlhttp.readyState == XMLHttpRequest.DONE)
var response = xmlhttp.responseText;
if(response == 'Success')
{
document.getElementById("uploadMSG").innerHTML='Image upload successful';
document.getElementById("addNewMediaFileLocation").value="";
document.getElementById("addMediaDescriptionForLocalText").value="";
}
else
{
document.getElementById("uploadMSG").innerHTML=response;
}
}
xmlhttp.send(fd);
}
พีเอชพี
if($function == 'addMediaFromLocal')
{
$AddSuccess = true;
$AddError ='File not uploaded.';
$MediaType = $_REQUEST['Type'];
$FileType = $_FILES['uploadedFile']['type'];
$FileName = $_FILES['uploadedFile']['name'];
$FileContent = file_get_contents($_FILES['uploadedFile']['tmp_name']);
....VALIDATE INFO...
if($AddSuccess)
{
//check success
if(move_uploaded_file("../media/$name",$FileContent) )
{
print("Succes");
}
else
{
print($AddError. "Image upload unsuccessful, please check your folder permission<br>");
}
}
else
{
print($AddError);
}
}
ข้อผิดพลาด:
E_NOTICE Error in file �actions.php� at line 1036: Undefined index: uploadedFile