如何获取Node.JS字段值(提交的表单数据)

时间:2018-07-07 15:05:28

标签: javascript node.js forms npm node-modules

我是Node.js的新手,我使用没有框架的Node.js(无表达),我想深入学习纯Node.js。

我当前的代码。

const { headers, method, url } = req;
  let body = [];
  req.on('error', (err) => {
    console.error(err);
  }).on('data', (chunk) => {
    body.push(chunk);
  }).on('end', () => {
     console.log(body)
    body = Buffer.concat(body).toString();

    console.log(body)
    res.writeHead(200, {'Content-Type': 'text/html\; charset=utf-8'});
    res.write(body)
    res.end()
  });

响应

------WebKitFormBoundaryAExpj6oapW6tzLe8
Content-Disposition: form-data; name="field-one"

Test value of field one
------WebKitFormBoundaryAExpj6oapW6tzLe8
Content-Disposition: form-data; name="field-two"

Test value of field-two
------WebKitFormBoundaryAExpj6oapW6tzLe8--

在此测试示例中,字段1的值为Test value of field one,字段2的值为Test value of field two如何通过字段名称获取此字段的值?

可以接受NPM模块,谢谢。

1 个答案:

答案 0 :(得分:1)

  

可以接受NPM模块,谢谢。

您可以使用parse-formdata软件包。

const parseFormdata = require('parse-formdata')
const http = require('http')

http.createServer((req, res) => {
    parseFormdata(req, (err, data) => {
        if (err) {
            // Set whatever status code you want
            return res.end('Error...');
        }
        console.log('fields:', data.fields)
        data.parts.forEach(function(part) {
            console.log('part:', part.fieldname)
        });

        res.writeHead(200, {
            'Content-Type': 'text/html\; charset=utf-8'
        });

        res.end();
    });

}).listen(8080)

如果您想学习自己解析表单数据,可以阅读该程序包的代码。