@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[]: (двоичный)


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

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

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

Войти через центр авторизации
Похожие вопросы