Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   загрузка через ajax type file (https://javascript.ru/forum/dom-window/77387-zagruzka-cherez-ajax-type-file.html)

deatlink 25.04.2019 14:19

загрузка через ajax type file
 
Здравствуйте, имеется input (type="file") и под ней кнопка добавить еще такое же поле. Т.е. получается, что можно добавлять сколько хочешь файлов.
но отправляет почему-то в обработчик 1 файл....

<input type='file' name="file" id="upload" />
<a id="add-files-new" href="#">добавить</a>


function mainformrequest(result_id,formMain,url) {

	
			 
			var data = new FormData();

//Form data
var form_data = $("#"+formMain).serializeArray();
$.each(form_data, function (key, input) {
    data.append(input.name, input.value);
});

//File data
var file_data = $('#upload')[0].files;
for (var i = 0; i < file_data.length; i++) {
    data.append("files[]", file_data[i]);
}
//Custom data
data.append('key', 'value');

$.ajax({
    url: url,
    method: "post",
    processData: false,
    contentType: false,
    data: data,
    success: function (data) {
 console.log(data);
  document.getElementById(result_id).innerHTML = data;
    },
    error: function (e) {
       location.reload();
    }
}); 
			 
    }

$("#add-files-new").on('click', function() {

	document.getElementById('load-new-files').insertAdjacentHTML('beforeend', '<br><br><span class="files24"><input type="file" name="file" id="upload" /></span>');
	
	return false;
});

Alexandroppolus 25.04.2019 20:43

Тут засада вот в чем: у всех файловых инпутов id="upload"

потом берется $('#upload')[0]. Т.е. только первый инпут.

надо им класс назначить, искать по классу и все обрабатывать, а не только [0]

laimas 25.04.2019 21:00

Цитата:

Сообщение от Alexandroppolus
Тут засада вот в чем

Блин, только сейчас удосужился гонять в data.append("files[]" .. :)


Часовой пояс GMT +3, время: 05:05.