Заранее прошу прощения, что вопрос получился длинным и много кода.
Суть в следующем: пытаюсь загрузить картинку на сервер из формы через ajax.
Код формы:
<img id="preview" class="img-fluid left-logo" src="" />
<form id="upload-image" enctype="multipart/form-data">
<input type="file" name="image" id="image">
<input type="submit" value="Сохранить изменения">
</form>
Как видите, проще не бывает...
Input type="file" обрабатывается JavaScript'ом:
$(document).ready(function () {
$('#image').change(function(){
readImage(this);
});
function readImage ( input ) {
if (input.files && input.files[0]) {
var reader = new FileReader();
reader.onload = function (e) {
$('#preview').attr('src', e.target.result); }
reader.readAsDataURL(input.files[0]); }
}
$('#upload-image').on('submit',(function(e) {
e.preventDefault();
var formData = new FormData(this);
$.ajax({
type:'POST',
url: './modules/image-update-handler.php',
data: formData,
cache:false,
contentType: false,
processData: false,
success:function(data){console.log('success');},
error:function(data){console.log('error');}
});
}));
});
Все происходит замечательно: картинка грузится в элемент с id="preview", ajax выполняется, в консоли - success.
Но в обработчик image-update-handler.php приходит пустой массив $_POST, да и $_FILES тоже пуст.
В функции readImage проверял через консоль переменную reader: она содержит объект fileReader, а его атрибут result содержит данные - data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGIA (и еще 28 972 символа).
Главный вопрос: как получить в обработчике данные файла из формы?