Используйте примитивные значения, массивы, файлы и объекты в FormData
FormData представляет собой набор пар ключ/значение, которые вы можете отправить через XMLHttpRequest. Учитывая форму, вы можете получить ее данные в формате FormData с помощью метода submit(). В то же время имейте в виду, что вы можете создать собственный FormData, чтобы использовать его в любом multipart/form-data запросе.
Чтобы создать объект FormData, вам сначала нужно создать его экземпляр следующим образом:
const formData = new FormData();
Затем вы можете добавить к нему пары ключ/значение с помощью метода append(). Давайте узнаем, как добавлять различные типы данных JavaScript в файл FormData.
Добавьте примитивное значение к объекту FormData
Чтобы добавить примитивное поле данных, такое как строка или число, к объекту FormData, вы можете использовать метод append() следующим образом:
formData.append('fieldName', 'fieldValue');
Обратите внимание, что FormData принимает только строки. Таким образом, значения null и undefined должны быть преобразованы в пустые строки или аналогичные, прежде чем добавлять их. Кроме того, не забудьте заменить fieldName фактическим названием вашего поля.
Добавить массив к объекту FormData
Чтобы добавить массив к объекту FormData, вам нужно пройтись по массиву и добавить каждое значение по отдельности, используя метод append(), как показано ниже:
const testArray = ['1', '2', '3'];
testArray.forEach((value) => {
formData.append('fieldName[]', value);
});
Обратите внимание, что имя поля должно заканчиваться на []. В частности, FormData будет содержать столько полей fieldName[], сколько значений в массиве, каждое из которых ссылается на определенное значение в массиве. Благодаря этому специальному синтаксису ваш сервер должен автоматически распознавать и преобразовывать поля fieldName[] в массив с именем fieldName, содержащий данные массива. Этот синтаксический трюк необходим, потому что FormData поддерживает только плоские значения.
Добавить файл к объекту FormData
Чтобы добавить файл к FormData, вы можете использовать метод append() и указать имя поля, объект файла и имя файла, как показано ниже:
// get the file from a <input type="file"> element
const fileInput = document.querySelector('input[type="file"]');
const file = fileInput.files[0];
// append the file directly to a FormData
formData.append('fieldName', file, file.name);
Как видите, FormData изначально поддерживает файлы, полученные из <input type="file"> HTML-элементов.
Добавить объект к объекту FormData
Чтобы добавить объект JavaScript к FormData, вы можете преобразовать объект в большой двоичный объект, используя JSON.stringify(), а затем добавить его с помощью:
const objectHere = {
'a': 'fooString',
'b': ['1', '2', '3']
};
formData.append('fieldName', JSON.stringify(testObject));
fieldName теперь будет содержать некоторые данные в формате JSON. Обратите внимание, что вам придется проанализировать поле на сервере, чтобы использовать его данные. Например, в Node.js вы можете разобрать его с помощью JSON.parse().
Заключение
Из этой статьи вы узнали, что FormData — это полезный инструмент для отправки данных через XMLHttpRequest. Благодаря методу append() вы можете присоединять примитивные поля данных, массивы, файлы и объекты к объекту FormData. Здесь вы видели, как это сделать, на нескольких примерах.
Спасибо за прочтение! Я надеюсь, что вы нашли эту статью полезной. Не стесняйтесь оставлять любые вопросы, комментарии или предложения.
Дополнительные материалы на PlainEnglish.io.
Подпишитесь на нашу бесплатную еженедельную рассылку новостей. Подпишитесь на нас в Twitter, LinkedIn, YouTube и Discord .
Заинтересованы в масштабировании запуска вашего программного обеспечения? Ознакомьтесь с разделом Схема.