Я пробую это уже несколько дней! Ничто, что, казалось, не работало для других, работало на меня! И мне действительно нужно это сделать сейчас.Загрузить файл через 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-плагины.
ОН МОЙ БОГ, большое вам спасибо! Я делал это для клиента и обещал сделать вчера. Спасибо я люблю тебя! – Stringering