I have a form using a file upload field with a multiple tag. Now I would like to pass it to php via FormData(). This Is what I have tried:
<input class="requiredField" type="file" accept=".xls,.xlsx,.csv,.pdf,.msg" name="commitment_publication_communication[]" multiple required>
jQuery:
var commitment_publication_communication = tool_form_annex.find('input[name="commitment_publication_communication[]"]')[0].files;
var fd = new FormData();
$.each(commitment_publication_communication, function (i, file) {
fd.append('c_publication_communication[]', file);
});
PhP:
$c_publication_communication = $_FILES['c_publication_communication'];
for ($i = 0; $i < count($c_publication_communication); $i++) {
media_handle_upload('c_publication_communication', 0);
}
EDIT: Full Ajax request
$.ajax({
url: ajaxurl,
type: 'POST',
processData: false,
contentType: false,
data: fd,
success: function (response) {
response = JSON.parse(response);
clickedButton.next().css('display', 'none');
clickedButtonNext.next().css('display', 'block');
clickedButtonNext.next().css('color', '#8ed600');
clickedButtonNext.next().css('margin-top', '20px');
clickedButtonNext.next().text(devplus_data.successfully_saved_temporarily_message);
},
error: function () {
clickedButton.next().css('display', 'none');
clickedButtonNext.next().css('display', 'block');
clickedButtonNext.next().css('color', 'red');
clickedButtonNext.next().css('margin-top', '20px');
clickedButtonNext.next().text(devplus_data.failed_to_temporarily_save_message);
}
});
I feel like I am going the right way but it's not working.. Any help would be appreciated!