#javascript #php #ajax #post
#javascript #php #ajax #Публикация
Вопрос:
Как я могу передать объект FormData через post и получить его в файле php, пытаясь загрузить файл изображения через ajax php.
Мой html, js-файл выглядит следующим образом
<input type="file" id="myFileInputId" name="myFileName">
var the_file_that_was_uploaded = profile_image_input.files[0];
var form_data_obj = new FormData();
form_data_obj.append('fileToUpload',the_file_that_was_uploaded);
form_data_obj.append("id_of_user", myId);
form_data_obj.append("text_of_quake", myTextvalue);
xhr.onload = function(){
if(this.status == 200){
console.log(this.responseText);
}
};
xhr.onerror = function(){
console.log('Error from server side');
}
xhr.open('POST','myPHPbackEnd.php',true);
xhr.send('some_information=' form_data_obj);
в моем php-файле я хочу сделать это
if(isset( $_POST['some_information'])){
//how to get the file and its porperty
//cannot get to $_FILES['some_information']
//or $_FILES['myFileName']
//or id and text
}
Я хочу получить объект FormData и его содержимое и передать его в следующий файл php для выполнения чего-то подобного, но не могу связать их все вместе
$fileName = $_FILES['fileToUpload']['name'];
$fileType = $_FILES['fileToUpload']['type'];
$fileContent = file_get_contents($_FILES['fileToUpload']['tmp_name']);
$dataUrl = 'data:' . $fileType . ';base64,' . base64_encode($fileContent);
$value = $_FILES['fileToUpload']['tmp_name'];
$targetPath = 'temp_image_folder/'.basename($_FILES['fileToUpload']['name']);
move_uploaded_file($value,$targetPath);
Комментарии:
1. Разве это
$_FILES['fileToUpload']
не так?
Ответ №1:
Измените свой js-код на:
xhr.send(form_data_obj);
Затем в вашем php выполните:
if(isset($_FILES['fileToUpload'])){
// do stuff with file
}