HTML-форма для загрузки изображения:
<form method="post" enctype="multipart/form-data">
<div>
<input type="file" id="image">
<button type="button" class="ImgSubmitButton" onclick="uploadImages();">UPLOAD IMAGE</button>
</div>
</form>
Javascript / Ajax для отправки данных.
var RequestObject = false;
if (window.XMLHttpRequest) {
RequestObject = new XMLHttpRequest();
} else if (window.ActiveXObject) {
RequestObject = new ActiveXObject("Microsoft.XMLHTTP");
}
function uploadImages() {
if (RequestObject) {
var formData = new FormData();
var myfile = document.getElementById('image').files[0];
formData.append('file', myfile);
RequestObject.open("POST", "processFileA.php");
RequestObject.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
RequestObject.onreadystatechange = function() {
if (RequestObject.readyState == 4 && RequestObject.status == 200) {
document.getElementById('err').innerHTML = RequestObject.responseText;
}
}
RequestObject.send("data=" + formData);
}
return false;
}
PHP прост, просто чтобы проверить, установлены ли данные.
if(isset($_POST['data'])){
echo $_POST['data'];
echo "data is set";
} else {
echo "data is not set";
}
Я проверил 3 запроса заголовка.
Первое: данные не установлены.
RequestObject.setRequestHeader('Content-Type','multipart/form-data');
Второе: данные не установлены.
RequestObject.setRequestHeader('Content-Type', "multipart/form-data; charset=utf-8; boundary=" + Math.random().toString().substr(2));
Третье: возвращает этот [объект FormData].
RequestObject.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
Я также пробовал не запрашивать заголовки, и данные не заданы.
Я знаю, как безопасно обрабатывать форму с помощью регулярной отправки формы с PHP, но не знаю, как это сделать.обрабатывать [объект FormData], как он передается через Ajax.Если это лучший метод или я что-то не так делаю, пожалуйста, дайте мне знать.Мой вопрос заключается в том, как правильно отправить файл изображения через Ajax для его обработки, как если бы вы в обычной форме отправляли его для правильной обработки в PHP.
Пожалуйста, не JQuery.