【问题标题】:How get Node.JS fields value (submitted form data)如何获取 Node.JS 字段值(提交的表单数据)
【发布时间】:2018-07-07 15:05:27
【问题描述】:

我使用没有框架的 Node.js (without-express)。

我当前的代码。

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--

在这个测试示例中,字段一的值为Test value of field one,字段二的值为Test value of field two 如何通过字段名获取这些字段的值?

NPM 模块是可以接受的。

【问题讨论】:

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


    【解决方案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)
    

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

    【讨论】:

    • 谢谢马科斯先生。这个包很容易。是否也可以将文件数据作为字段使用?
    • 不客气!,是的parts 是用于多部分文件上传的流数组
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-06-07
    • 1970-01-01
    • 2020-12-14
    • 2018-12-19
    • 2015-08-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多