Node.js中利用multiparty处理表单

无道 2019-09-22 0 条评论 NodeJs 阅读528 手机阅读

前言

如果你的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);
全文完 [
有帮助?打赏
支付宝打赏
微信打赏
]
修改: 2019-09-22 12:34
这篇文章还没有评论呢~
点击刷新/生成验证码
It's me
昵称:无道
坐标:成都
性别:
一个人,一介学生,一个儿子~ 愿你我都被世界温暖以待
迷思爱 公众号

新建了个公众号,会不定期分享一些小玩意,有提升效率的办公软件、有一些黑科技的软件、或教程等等。

爷~,要不关注下~~