Почему массив $_FILES пуст?

Заранее прошу прощения, что вопрос получился длинным и много кода.
Суть в следующем: пытаюсь загрузить картинку на сервер из формы через 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 символа).
Главный вопрос: как получить в обработчике данные файла из формы?
  • Вопрос задан
  • 869 просмотров
Пригласить эксперта
Ответы на вопрос 1
ThunderCat
@ThunderCat Куратор тега PHP
{PHP, MySql, HTML, JS, CSS} developer
$('#upload-image').on('submit',(function(e) {
                e.preventDefault();
                var formData = new FormData();
                formData.append('image',$('#image')[0].files[0]); 
                $.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');}
                });
        }));
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы