­

Node.js中利用multiparty处理表单

  • 2019 年 11 月 13 日
  • 筆記

前言

如果你的node.js中未使用框架来开发一个后台,那么如何处理表单数据可能有很多方法。经过实践我觉得利用multiparty这个类库来处理表单数据可能是一个比较好的想法。

因为表单数据大致有两种:

  • 普通表单数据
  • 表单文件上传

细节

安装

npm i multiparty -S

表单

<body>      <form action="http://localhost:3000" enctype="multipart/form-data" method="post">          <input type="text" name="name" placeholder="name"><br>          <input type="text" name="value" placeholder="value"><br>          <input type="file" name="upload"><br>          <input type="submit" value="Get it">      </form>  </body>

我们这里来写一个简易表单

Node

首先引入两个库

const multiparty = require('multiparty');  const http = require('http');

创建一个简易服务器

let server = http.createServer((req, res) => {        });    server.listen(3000);

监听的是一个3000端口,和之前html表单提交action的保持一致

新建一个上传文件夹

我这是upload文件夹,你可以当成一个临时上传的文件夹,等自己处理完后把它删除即可。

    let form = new multiparty.Form({ // 这里new了一个对象,参数是一个uploadDir          uploadDir: './upload'      });

解析表单传入req

 form.parse(req);

监听事件

 form.on('field', (name, value) => {          console.log('字段', name, value);      });        form.on('file', (name, file) => {          console.log('文件', name, file);      });        form.on('close', ()=>{          console.log('表单处理完成');      })

field 事件就是普通的表单数据,回调参数是表单name和value file事件就是上传的文件的信息,回调参数是文件的name和file信息 还有一个close事件,代表表单处理完成。

测试

表单数据

后台输出

可以看出这些数据全部都已经被multiparty处理好了,我们只需使用即可。

完整代码参考

const multiparty = require('multiparty');  const http = require('http');      let server = http.createServer((req, res) => {        let form = new multiparty.Form({          uploadDir: './upload'      });        form.parse(req);        form.on('field', (name, value) => {          console.log('字段', name, value);      });        form.on('file', (name, file) => {          console.log('文件', name, file);      });        form.on('close', ()=>{          console.log('表单处理完成');      })    });    server.listen(3000);