如何在没有浏览器的情况下在 node.js 中使用 FormData?

How to use FormData in node.js without Browser?

我想在没有浏览器的情况下在 nodejs 中发出 post 请求,因为它是后端代码。

const formdata = new FormData()
formdata.append('chartfile', file);

但是上面的代码给我的错误是FormData not defined。 我正在使用 ES6。

谁能告诉我如何在nodejs中使用FormData?

您可以使用 form-data - npm 模块。因为 formData() 不是 NodeJS API

这样用,

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'));

FormData 是 JS web API 的一部分(不包含在本机 NodeJS 中)。您可以安装 form-data 软件包。

我建议使用 npm 模块 formdata-node because it's a complete (spec-compliant) FormData implementation for Node.js. It supports both ESM/CJS targets, so EM6 is supported. You can find a few examples at the npm module page

不需要 npm 模块,URLSearchParams 做同样的事情!

原始示例

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'));

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
});

在我看来,不需要额外依赖项的最干净的解决方案是:

const formData = new URLSearchParams({
  param1: 'this',
  param2: 'is',
  param3: 'neat',
})