Я работаю над файловым загрузчиком, который загружает изображение при изменении ввода моего кода для формы в html.
<form method="post" enctype="multipart/form-data"> <input name="uploaded[]" type="file" id="file_upload"/> </form>
Мой JavaScript и Ajax:
document.getElementById("file_upload").onchange = function() { var id = document.getElementById("user_id").innerHTML; var file = document.getElementById("file_upload").files[0]; alert(file.size); var formdata = new FormData(); formdata.append("filer",file,true); var ajax = new XMLHttpRequest(); ajax.onreadystatechange = function(){ if(ajax.readyState==4 && ajax.status==200){ document.getElementById("one").remove(); var img = document.createElement('img'); var first_path = '/user_image/'; var path = first_path.concat(id,'.png'); img.setAttribute('alt','User image'); img.setAttribute('id','one'); img.setAttribute('src',path); document.getElementById("user").appendChild(img); alert("end"); } else{ document.getElementById("one").remove(); var img = document.createElement('img'); img.setAttribute('src','/img/loading.gif'); img.setAttribute('alt','User image'); img.setAttribute('id','one'); document.getElementById("user").appendChild(img); } } ajax.open("POST","upload_image.php"); ajax.setRequestHeader("Content-Type", "multipart/form-data"); ajax.send(formdata); };
И мой PHP-код прост – это просто проверить, все ли в порядке
require("../includes/config.php"); //config folder to start the session if($_SERVER["REQUEST_METHOD"]=="POST"){ echo '<pre>',print_r($_FILES),'</pre>'; //dumping some variable and arrays to see where the problem is }
Запрос, который я получаю с сервера, является предупреждением: Отсутствует граница в данных POST multipart / form-data в Unknown в строке 0, но я отправил formdata и заголовок запроса, и я открыл файл.
Вы должны просто удалить следующую строку:
ajax.setRequestHeader("Content-Type", "multipart/form-data");
Вместо отправки данных как multipart/form-data
:
ajax.setRequestHeader("Content-Type", "multipart/form-data");
Вы должны отправить его как application/json
:
ajax.setRequestHeader("Content-Type", "application/json");