Здравствуйте! Имеем некоторую форму, в которую добавляем картинки:
ejs('#add_images').change(function (event) {
let files = this.files;
for (let i = 0; i < files.length; i++) {
// Всяческие проверки
preview(file);
}
});
В функции
preview()
мы производим некоторые манипуляции (которые не имеют значения) и добавляем файл в определенный массив:
function preview (file) {
reader.addEventListener('load', function (event) {
// ...
queue[file.name] = file;
});
}
Ну и просто отправляем форму:
form.on('submit', function(event) { event.preventDefault();
let formData = new FormData(),
id;
for (id in queue) {
formData.append('images', queue[id]);
// formData.append('images[' + id + ']', queue[id]); - не работает!
// formData.append('images[]', queue[id]); - не работает!
}
sendFormData(
'/test',
formData
).then(function (response) {
console.log(response); // всегда возвращает array(0) {}
});
return false;
});
sendFormData - обёртка для Promise:
function sendFormData(url, data) {
return new Promise(function(resolve, reject) {
let request = new XMLHttpRequest();
request.open('post', url);
request.onload = function() {
if (request.status == 200) {
resolve(request.response);
} else {
reject(Error(request.statusText));
}
};
request.onerror = function() {
reject(Error("Network Error"));
};
request.send(data);
});
};
На стороне PHP возвращаю просто var_dump:
var_dump($_POST);
И всегда возвращается
array(0) {}
Хотя изображения присутствуют в FormData.