@photosho

Как отправить массив файлов на сервер?

Передаю данные на сервер в объекте BX.ajax.FormData() (formData.send()). Нужно передать массив файлов. Если работаю с одиночным файлом, то никаких проблем - файл передается средствами FormData. С массивом работать не хочет:

1. Если массив файлов просто записать через "append", то на сервере в переменной "$_FILES" пусто:

formData.append('IMAGES', $input.get(0).files);

На сервер данные уходят в таком виде:

IMAGES: [object File],[object File]


2. Если разобрать массив на стороне JS и каждый элемент записать в FormData отдельно, то сервер вообще перестает обрабатывать скрипт - видимо, вылетает с какой-то ошибкой, но текст ошибки не выводит:

[цикл]
formData.append('IMAGES[]', $input.get(0).files[i]);


На сервер данные уходят в таком виде:

IMAGES[]: (двоичный)
IMAGES[]: (двоичный)


Подскажите, как решить проблему.
  • Вопрос задан
  • 705 просмотров
Пригласить эксперта
Ответы на вопрос 1
@alexalexes
См. документацию к formData.
Для прикрепления файлов есть перегрузка метода append на 3 параметра, причем несколько файлов крепятся вот так:
formData.append("userpic", myFileInput.files[0], "chris1.jpg");
formData.append("userpic", myFileInput.files[1], "chris2.jpg");

Обратите внимание на 1-й параметр, в нем нет попыток создать массив, formData должна сама это разрулить, если под одно имя поля последовательно применять append.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы