Express 用于处理请求体的中间件很多,除了标题中提到的三个,还有multiparty、busboy等,multiparty性能上不如busboy,而multer是busboy的顶层封装,效率又提升了一个档次。bodyParser() 内部就是使用了 formidable ,只不过多了一层封装而已。
Bodyparser中间件
这个中间件用于处理第1,3种content-type 的body非常的方便,但不能用于处理multipart类型的body,具体api可见GitHub,提供了四种方法

bodyParser.json() 将body解析为json
bodyParser.text() 将body解析为文本
bodyParser.raw() 将body解析为二进制
bodyParser.urlencoded() 将编码为URLEncoder的body解析出来

Multer 中间件
只处理类型是multipart/form-data的body。它的主要功能是: .single(‘photo’) .array(‘photos’, 12) .fields([])分别对应处理上传文件,批量上传和分类上传,同时也带有处理纯文字的功能,用上面三个方法不带参数即可。
Formidable 中间件
Formidable它的主页上的特性描述看起来很屌的样子,在express中我们用express-formidable ,可用于处理表单和上传文件,功能大而全,可配置项非常多,最大的区别是还提供了一个对象,用于处理各种事件。
常见Content-Type类型有四种:
  1. application/x-www-form-urlencoded 常见的form提交
  2. multipart/form-data 文件提交
  3. application/json 提交json格式的数据
  4. text/xml 提交xml格式的数据
所以在express框架中,我个人偏向使用multer插件,既能通过req.body接收json格式的参数,又能通过req.file或者req.files接收文件。
备注:

在实际使用过程中,因为multer以及body-parser是express官方文档指出的中间件,所以使用起来的参考性更强一些。formidable在使用的过程中,因为form.parse的触发问题,无法很贴合express框架去使用(我还在探索,暂时当做nodejs原生使用的该中间件,如果有人有例子,希望可以给我消息,我学习借鉴一下,还在学习中,此篇文章暂时先如此,有时间将这块解决)。

nodejs下上传文件formidable、multer、body-parser的区别相关推荐

  1. 解决IE8下上传文件问题,无需flash,无需html5

    解决IE8下上传文件问题 场景:实现上传文件功能,重写上传按钮样式,并需要得到后台返回的数据来动态修改页面. 要求:不需要flash以及其他额外需要的东西. 尝试过的方法:1.webuploader. ...

  2. nodeJs修改上传文件的大小限制

    nodeJs修改上传文件的大小限制 在app.js里引入这几行代码即可. 不然前端如果上传比较大的文件就会报下图的错误: 服务端也会报错:

  3. linux传不上去文件,linux下上传文件,文件上传不上去

    起初发现问题,以为是代码出错,于是排查代码.检查上传路径 System.out.println(":::::::::导入数据::::::::"); System.out.print ...

  4. cmd下上传文件到ftp服务器,cmd上传文件到ftp服务器

    cmd上传文件到ftp服务器 内容精选 换一换 在本地主机和Windows云服务器上分别安装QQ.exe等工具进行数据传输.使用远程桌面连接mstsc方式进行数据传输.该方式不支持断点续传,可能存在传 ...

  5. jquery-form中ajaxSubmit提交文件,以及解决ie9下上传文件后自动下载问题

    需要引用jquery-form.js 下载地址http://plugins.jquery.com/form/ 1.之前的项目一直使用formData的方式上传文件到后台处理,但新项目要求支持ie9,i ...

  6. NodeJS sftp 上传文件

    1. 使用 ssh2-sftp-client 上传文件到 sftp npm i ssh2-sftp-client -s 2. 核心代码: // SftpTool const Client = requ ...

  7. [转载]linux下上传文件真的需要ftp么?

    本文转自JiangYao's Blog >>利用ssh传输文件 在linux下一般用scp这个命令来通过ssh传输文件. 1.从服务器上下载文件 scp username@serverna ...

  8. nodeJs 接收上传文件

    前台: <!DOCTYPE html> <html>     <head>         <meta charset="utf-8"&g ...

  9. layui上传文件请求接口异常_SpringMVC实现文件上传与下载,拦截器,异常处理

    第一章:响应数据和结果视图 1. 返回字符串 Controller方法返回字符串可以指定逻辑视图的名称,根据视图解析器为物理视图的地址. @RequestMapping(value="/he ...

最新文章

  1. 初学web标准的几个误区
  2. python3文件下载-python3获取文件中url内容并下载代码实例
  3. 如何让Spring MVC显示自定义的404 Not Found页面
  4. 使用 SVG 动画实现弹性的页面元素效果
  5. stack overflow--技术问答网站
  6. python导入同一文件夹下的类_Python模块导入机制与规范
  7. 【深度学习再突破】让计算机一眼认出“猫”:哈佛提出新高维数据分析法
  8. 福布斯中国2020科技女性榜:蓝港互动廖明香、百度李莹等上榜
  9. 【STM32】STM32F103C8T6+L298N通过PWM控制直流电机转速
  10. qq空间html倒计时,空间倒计时flash代码,有图
  11. Windows10-查询电脑mac地址
  12. 《了不起的我》 自我发展的心理学 -- 陈海贤 读后感
  13. maya linux 安装教程视频,在Archlinux 安装Maya7.01
  14. DELL强化版《最终幻想11》认证电脑出炉
  15. 无法找到指定DLL库文件“v8.dIl“中的输出命令“Initializev8”
  16. 关于AVCC与ADCC不一致的问题
  17. idea 上传项目到码云git仓库提交到gitee(完整操作流程)
  18. java-php-python-ssm信贷管理系统计算机毕业设计
  19. vue 数字变动动画实现
  20. Access用户如何借助低代码转型为Web(B/S和移动端)开发?

热门文章

  1. java model 原则_java内存模型(Java Memeory Model)
  2. ATECC508A芯片开发笔记(六):产生CSR以及申请证书(X.509)流程及其内容分析
  3. 国内图书分类号 国际图书分类号查询
  4. 基础:常见的参数估计方法——MLE和MAP
  5. matplotlib  plt.lengend
  6. 秋天SWF生成PDF免费版V1.4
  7. 华为网络--Hybrid接口工作原理与实验
  8. redis发布订阅与集群
  9. 如何去除discuz的powered by discuz!代码
  10. 平台“运营+变现”万精油方法论:拉新→促活→留存→转化→裂变→提频