前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Node.js中利用multiparty处理表单

Node.js中利用multiparty处理表单

作者头像
无道
发布2019-11-13 14:27:22
2.3K1
发布2019-11-13 14:27:22
举报
文章被收录于专栏:无道编程无道编程

前言

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

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

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

细节

安装
代码语言:javascript
复制
npm i multiparty -S
表单
代码语言:javascript
复制
<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

首先引入两个库

代码语言:javascript
复制
const multiparty = require('multiparty');
const http = require('http');

创建一个简易服务器

代码语言:javascript
复制
let server = http.createServer((req, res) => {



});

server.listen(3000);

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

新建一个上传文件夹

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

代码语言:javascript
复制
    let form = new multiparty.Form({ // 这里new了一个对象,参数是一个uploadDir
        uploadDir: './upload'
    });
解析表单传入req
代码语言:javascript
复制
 form.parse(req);
监听事件
代码语言:javascript
复制
 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处理好了,我们只需使用即可。

完整代码参考

代码语言:javascript
复制
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,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 细节
    • 安装
      • 表单
      • Node
        • 新建一个上传文件夹
          • 解析表单传入req
            • 监听事件
            • 测试
            • 完整代码参考
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档