Используйте примитивные значения, массивы, файлы и объекты в 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 .
Заинтересованы в масштабировании запуска вашего программного обеспечения? Ознакомьтесь с разделом Схема.