【问题标题】:How to use FormData in node.js without Browser?如何在没有浏览器的 node.js 中使用 FormData?
【发布时间】:2020-12-14 00:50:47
【问题描述】:

我想在没有浏览器的nod​​ejs中发出一个post请求,因为它是后端代码。

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

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

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

【问题讨论】:

    标签: javascript node.js forms multipartform-data form-data


    【解决方案1】:

    您可以使用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'));
    

    【讨论】:

    • 感谢您的回答。我正在使用 ES6,所以我像这样导入:import FormData from 'form-data' 但我收到错误form_data_1.default is not a contructor
    • 如果是nodejs,只能var FormData = require('form-data');nodejs不支持ES6语法导入。
    • 我正在使用 esm 模块来使用 ES6 语法。
    • 试试import * as FormData from form-data
    • 谢谢。我收到另一个错误source.on is not a function。抱歉我的问题很糟糕
    【解决方案2】:

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

    【讨论】:

    • 谢谢。你能告诉我如何在 ES6 语法中使用该模块吗?
    • import * as FormData from "form-data";
    • 对我来说这是有效的:import { default as FormData } from "form-data";
    【解决方案3】:

    不需要 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
    });
    

    【讨论】:

      【解决方案4】:

      我建议使用 npm 模块 formdata-node,因为它是 Node.js 的完整(符合规范)FormData 实现。它同时支持 ESM/CJS 目标,因此支持 EM6。您可以在npm module page 找到一些示例。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-07-07
        • 1970-01-01
        相关资源
        最近更新 更多