Quiero hacer una solicitud de publicación en nodejs sin navegador, ya que es un código de fondo.
const formdata = new FormData() formdata.append('chartfile', file); Pero el código anterior me da un error porque FormData not defined . Estoy trabajando con ES6.
Alguien, ¿quién puede decirme cómo usar FormData en nodejs?
Puede usar form-data - módulo npm. porque formData() no es la API de NodeJS
Úsalo de esta manera,
var FormData = require('form-data'); var fs = require('fs'); var form = new FormData(); form.append('my_field', 'my value'); form.append('my_buffer', new Buffer(10)); form.append('my_file', fs.createReadStream('/foo/bar.jpg'));Sugeriría el módulo npm formdata-node porque es una implementación de FormData completa (que cumple con las especificaciones) para Node.js. Admite objetivos ESM/CJS, por lo que EM6 es compatible. Puede encontrar algunos ejemplos en la página del módulo npm .
No es necesario un módulo npm, URLSearchParams hace exactamente lo mismo!
Ejemplo original
var fs = require('fs'); var form = new URLSearchParams(); form.append('my_field', 'my value'); form.append('my_buffer', new Buffer(10)); form.append('my_file', fs.createReadStream('/foo/bar.jpg'));Ejemplo de Axios
const formData = new URLSearchParams(); formData.append('field1', 'value1'); formData.append('field2', 'value2'); const response = await axios.request({ url: 'https://example.com', method: 'POST', headers: {'Content-Type': 'application/x-www-form-urlencoded'}, data: formData });En mi opinión, la solución más limpia que no requiere dependencias adicionales es:
const formData = new URLSearchParams({ param1: 'this', param2: 'is', param3: 'neat', })