2016-01-24 3 views
0

Я пробую это уже несколько дней! Ничто, что, казалось, не работало для других, работало на меня! И мне действительно нужно это сделать сейчас.Загрузить файл через ajax

Так что это очень простые:

<form method="POST" enctype="multipart/form-data"> 
    <input type="file" name="browseFile" id="photo" /> 
    <input type="submit" id="send" /> 
</form> 

Как вы можете видеть, есть HTML форма с вводом имени файла и кнопкой отправки. Для чего я пытаюсь сделать, мне нужно отправить файл из поля ввода сразу после изменения его значения на сервер.

Пропустим часть прослушивателей событий и проверку.

Это JavaScript, который должен быть в состоянии получить значение поля ввода и отправить его на сервер:

var inputFilePhoto = document.getElementById("photo"); 
var imageFile = inputFilePhoto.files[0]; 

var formData = new FormData();    
formData.append("file", imageFile); 

$.ajax({ 
    type: "POST", 
    url: "ajax.php", 
    data: formData, 
    contentType: false, 
    processData: false, 

    success: function (output) { 
     document.write(output); 
     alert("OK"); 
    }, 
    error: function() { 
     alert("Error"); 
    } 
}); 

Как вы можете видеть, я использую объект FormData, который был новый для меня пару дней назад. Он отлично работает с текстовыми полями и т. Д., Но не для полей ввода файлов. Я также попытался применить всю форму к этому объекту (new FormData($("form")[0])), но это - снова - игнорирует поля ввода типа «файл», как если бы они не существовали.

Чтобы вернуться к приведенному выше примеру: ajax.php не делает ничего, кроме отладки $ _POST. Так что это ajax.php:

<?php 

echo '<pre>'; 

var_dump($_POST); 
echo '</pre>'; 

Результатом этого является пустой массив array(0) { }

Технические детали: Проверено на Chrome V48 на Mac OS X 10.11, с помощью JQuery 2.2.0

Я надеюсь, что кто-то может наконец помочь мне с этим, я принимаю решения, которые также используют js-плагины.

ответ

2

Данные из файловых входов отображаются в the $_FILES superglobal, а не $_POST, когда данные формы обрабатываются PHP.

+0

ОН МОЙ БОГ, большое вам спасибо! Я делал это для клиента и обещал сделать вчера. Спасибо я люблю тебя! – Stringering

Смежные вопросы