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