У меня есть js функция, которая, с помощью ajax, передает на файл upload.php данные. вот сама функция Код (Text): var data = new FormData(); jQuery.each($("#selectedFiles")[0].files, function(i, file) { data.append('file-'+i, file); }); $.ajax({ type: 'POST', data: {text: texT,photos:data}, url: 'путь/upload.php', dataType: "json", contentType: false, processData: false, success: function(html){ //успех } как вы видите, в ключе, photos установлен параметр data, который имеет файлы. Как быть на стороне сервера, чтобы получить эти файлы и провести несколько проверок? а когда параметр data: data, то на стороне сервера я могу просто использовать глобальный массив $_FILES. Надеюсь, я все понятно объяснил.
Но каким образом? Надо использовать foreach? Можете поконкретней, просто я попытался использовать $_FILE, когда data: {text: texT,photos:data}, но ничего не работало.
Странно, попробуй: Retrieving a FormData object from an HTML form https://developer.mozilla.org/en-US/docs/Web/API/FormData/Using_FormData_Objects
Как это должно мне помочь? Я почитал, и ничего не понял, чем она отличается от обыкновенного FormData()
ты без цикла добился отправки? там не надо делать apend, просто указать ссылку на форму и будут отправлены все поля
Прошу прощения, не заметил. Я исправил данную функцию, так как она в переменную data добавляла только одну картинку. Вот исправленный вариант Код (Javascript): for(var i = 0; i < col; i++){ if(blackList.indexOf(":"+i+":") == -1) data.append('file-'+i, $("#selectedFiles")[0].files[i]); } переменная col равна количеству элементов в массиве files.
Отлично значит задача решена? Если нет то первым делом надо добиться отправки одного файла и скажем 1-2 параметра, а не делать циклы.
Мне просто надо узнать, что делать на стороне сервера, когда аякс отправляет какое то количество данных включая файлы.
Делай тоже самое, что и при обычной загрузки файлов https://secure.php.net/manual/ru/features.file-upload.post-method.php