Почему при передаче массива в FormData, массив конвертируется в строку?

Когда вы передаете массив в объект FormData в JavaScript, он преобразуется в строку из-за спецификации API FormData.

Этот процесс называется "сериализацией". FormData предназначен для использования в отправке формы с помощью AJAX или при создании объекта FormData для загрузки файлов на сервер.

При сериализации массива данные преобразуются в формат, который может быть интерпретирован сервером. В контексте API FormData массивы сериализуются путем объединения всех элементов массива в одну строку, разделенную запятыми. Таким образом, итоговое значение в FormData будет строковым значением, содержащим все элементы массива.

Например, если у вас есть массив ["apple", "banana", "orange"], после передачи его в FormData он будет преобразован в строку "apple,banana,orange".

Этот подход к сериализации массивов позволяет сохранить структуру данных при отправке формы или загрузке файлов на сервер. Но это также означает, что на сервере вам нужно будет разбить строку обратно на отдельные элементы массива, если вы хотите получить исходный массив.

Если вам требуется передать массив в FormData без сериализации, вы можете воспользоваться другими методами. Можно использовать JSON.stringify() для преобразования массива в строку JSON, а затем добавить эту строку как значение в FormData. На сервере вам потребуется разобрать эту строку JSON обратно в массив.

Ниже приведен пример кода, иллюстрирующий это:

let myArray = ["apple", "banana", "orange"];
let formData = new FormData();

// Преобразование массива в строку JSON
let arrayString = JSON.stringify(myArray);

// Добавление строки в FormData
formData.append("myArray", arrayString);

// Отправка formData на сервер ...

После этого, на сервере вы можете получить значение myArray из объекта FormData и разобрать его обратно в массив, используя JSON.parse():

let myArrayString = request.body.myArray; // Получение строки из объекта FormData на сервере
let myArray = JSON.parse(myArrayString); // Преобразование строки JSON обратно в массив

Теперь у вас есть исходный массив myArray для дальнейшей обработки на сервере.

Это лишь один из способов работы с массивами в FormData. В зависимости от ваших потребностей и конкретной ситуации, вы можете использовать разные подходы для работы с массивами в FormData.