nodejs之multiparty插件使用简析

Multiparty是用来解析FormData数据的一款插件,还有一款与之功能相同的插件,叫Formidable。没有使用过这款插件,这里就不多说了,只是简单的提一下。接下来继续说Multiparty。先提供下官方API链接:ClickHere。英文版的,英语好的可以去看一下。

使用Multiparty这款插件,首先需要安装:npm install multipary。然后引用该插件,并实例化插件:。插件的构造函数接收一个对象作为参数,参数是可选的,可以不不穿。参数的属性有:encoding:formdata的数据设置编码,默认是utf-8。 maxFieldsSize:限制字段,按字节分配的内存量,默认是2M,超出则会产生错误。 maxFields:限制被解析字段的数量,默认为1000。maxFilesSize:此属性只有在autoFiles为true的时候生效,设置上传文件接收字节的最大数量。也就是限制最大能上传多大的文件。autoFields:启用字段事件,并禁用字段的部分时间。如果监听字段事件,该属性自动为true。 autoFiles:启用文件事件,并禁用部分文件事件,如果监听文件事件,则默认为true。uploadDir:放置文件的目录,只有autoFiels为true是有用。

实例化完构造函数后,开始正式解析FormData数据。利用parse()方法来解析。方法接收两个参数,无返回值。第一个参数为request对象,把创建服务时,回掉函数中的第一个参数传进去就可以。第二个参数是cb,一个回掉函数,通过该回掉函数,可以获取到解析后的数据。如果你是上传文件,使用这个回调函数的话。那我可以很荣幸的告诉你,你不需要在执行写入文件的工作了,因为插件已经完成了。你只需要设置好uploadDir属性,然后做些后续操作就可以了。因为回掉函数会默认开启autoFields和autoFlies。个人感觉应该是内部监听field和file事件。继续说回调函数,它有三个参数,第一个参数是err,第二个参数是fields,第三个参数是flies。err是发生错误时,返回的异常信息。fields是一个对象,存储着FormData里的字段信息。files存储的是文件信息。如果你把整个file对象直接放进formData内,则有值,否则为空对象。假如你想自己写文件的话,这个回调函数完全可以忽略掉。

那自己写文件,如何写呢?众所周知,nodejs是靠事件驱动的,它通过事件来实现异步编程,来达到其它后台语言多线程的效果。作为基于nodejs实现的插件,事件肯定是必不可少的,而它提供的这些事件,提供了自己写文件的通道。

              part事件,之所以先说这个事件,因为它是实现自己写文件的关键。该事件会在请求中遇到文件数据时触发,它的回调函数是一个实现可读流的实例对象。对象提供的属性有headers:存储着请求的头部信息。name:字段名称。filename:文件名称。byteFffset:这部分数据,在主体数据中的字节偏移量。byteCount:数据总的字节长度。注意使用part事件时,不要再去监听fields和files事件。如果监听了的话,那在part事件中,你将得不到你想要的数据。

这是一段写文件的代码仅供参考。

aborted事件会在请求中止时触发。

        close事件会在请求结束之后触发。

        file事件,如果发送的是文件,则可以监听该事件。监听此事件,插件会把文件写到磁盘上,在利用回调返回相关信息。参数一name:字段名称。参数二file:存储着文件信息的对象。属性有:fieldName:字段名称。originalFilename:文件名称。path:写到磁盘上文件的具体路径。headers:存储着头部信息。size:文件具体大小。

        field事件,监听此事件,可以获取到请求中的具体数据。回调函数两个参数。name:字段名。value:字段值。

这些就是multiparty插件的一些api的介绍,有写的不对的地方,还请大神指正。

时间: 2024-10-15 23:19:56

nodejs之multiparty插件使用简析的相关文章

借助LANMT构架,简析ngnix的使用

LNMP流程图 nginx PHP Mysql Nginx Fastcgi_pass <-FastCGI-> fastcgi-(php-fpm)<->wrapper Php 解析器 (Php.ini) <->mysql fastcgi-(php-fpm)<->wrapper fastcgi-(php-fpm)<->wrapper fastcgi-(php-fpm)<->wrapper fastcgi-(php-fpm)<->

GLib库安装与简析

GLib是GTK+和GNOME工程的基础底层核心程序库,是一个综合用途的实用的轻量级的C程序库, 它提供C语言的常用的数据结构的定义.相关的处理函数,有趣而实用的宏, 可移植的封装和一些运行时机能,如事件循环.线程.动态调用.对象系统等的API. 它能够在类UNIX的操作系统平台(如LINUX, HP-UNIX等),WINDOWS,OS2和BeOS等操作系统台上运行. 一.GLib在CentOS上的安装 检查系统当前的版本 # rpm -qi glibc Name        : glibc

ONOS预热篇之架构简析(二)

ONOS是首款专门面向服务提供商和企业骨干网的开源SDN网络操作系统,是由一家名为开放网络实验室(ON.Lab)的非盈利性组织打造的一款商用控制器,并将于美国时间2014年12月5日全球首发.ONOS旨在为服务提供商和企业骨干网提供高可用性(HA).可横向扩展及高性能的网络需求.由于该项目得到了业界各知名大佬包括服务提供商AT&T.NTT,网络供应商Ciena.Ericsson.Fujitsu.Huawei.Intel.NEC,网络运营商Internet2.CNIT.CREATE-NET的资助和

web应用构架LAMT及tomcat负载简析

Httpd    (mod_jk.so) workers.properties文件 uriworkermap.properties文件 <--AJP1.3--> Tomcat  --> jdk 大致流程:apache服务器通过mod_jk.so 模块处理jsp文件的动态请求.通过tomcat worker等待执行servlet/JSP的tomcat实例.使用 AJP1.3协议与tomcat通信.tomcat有借助jdk解析. 负载就是 多台tomcat.共同解析apache发送的jsp请

CentOS的网络配置简析

我们在进行对CentOS的网络配置时,一般会从IP地址(IPADDR).子网掩码(NETMASK).网关(Gateway).主机名(HOSTNAME).DNS服务器等方面入手.而在CentOS中,又有着不同的命令或配置文件可以完成这些配置操作,接下来,我们将从ifcfg系命令,iproute2系命令以及配置文件3个方面来简析网络配置的方法. 一.ifcfg系命令 ifcfg系命令包括ifconfig,route,netstat和hostname. 1.ifconfig命令 用来配置一个网络接口.

JDK源码简析--java.lang包中的基础类库

题记 JDK,Java Development Kit. 我们必须先认识到,JDK只是,仅仅是一套Java基础类库而已,是Sun公司开发的基础类库,仅此而已,JDK本身和我们自行书写总结的类库,从技术含量来说,还是在一个层级上,它们都是需要被编译成字节码,在JRE中运行的,JDK编译后的结果就是jre/lib下得rt.jar,我们学习使用它的目的是加深对Java的理解,提高我们的Java编码水平. 本系列所有文章基于的JDK版本都是1.7.16. 本节内容 在本节中,简析java.lang包所包

经验模态分解法简析 (转)

http://blog.sina.com.cn/s/blog_55954cfb0102e9y2.html 美国工程院士黄锷博士于1998年提出的一种信号分析方法:重点是黄博士的具有创新性的经验模态分解(Empirical Mode Decomposition)即EMD法,它是一种自适应的数据处理或挖掘方法,非常适合非线性,非平稳时间序列的处理,本质上是对数据序列或信号的平稳化处理. 1:关于时间序列平稳性的一般理解: 所谓时间序列的平稳性,一般指宽平稳,即时间序列的均值和方差为与时间无关的常数,

Java Annotation 及几个常用开源项目注解原理简析

PDF 版: Java Annotation.pdf, PPT 版:Java Annotation.pptx, Keynote 版:Java Annotation.key 一.Annotation 示例 Override Annotation Java 1 2 3 @Override public void onCreate(Bundle savedInstanceState); Retrofit Annotation Java 1 2 3 @GET("/users/{username}&quo

Linux网络性能优化方法简析

Linux网络性能优化方法简析 2010-12-20 10:56 赵军 IBMDW 字号:T | T 性能问题永远是永恒的主题之一,而Linux在网络性能方面的优势则显而易见,这篇文章是对于Linux内核中提升网络性能的一些优化方法的简析,以让我们去后台看看魔术师表演用的盒子,同时也看看内核极客们是怎样灵活的,渐进的去解决这些实际的问题. AD:2014WOT全球软件技术峰会北京站 课程视频发布 对于网络的行为,可以简单划分为 3 条路径:1) 发送路径,2) 转发路径,3) 接收路径,而网络性