zoukankan      html  css  js  c++  java
  • nodejs之multiparty插件使用简析

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

                  使用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的介绍,有写的不对的地方,还请大神指正。

  • 相关阅读:
    自然语言交流系统 phxnet团队 创新实训 项目博客 (十一)
    install ubuntu on Android mobile phone
    Mac OS, Mac OSX 与Darwin
    About darwin OS
    自然语言交流系统 phxnet团队 创新实训 项目博客 (十)
    Linux下编译安装qemu和libvirt
    libvirt(virsh命令总结)
    深入浅出 kvm qemu libvirt
    自然语言交流系统 phxnet团队 创新实训 项目博客 (九)
    自然语言交流系统 phxnet团队 创新实训 项目博客 (八)
  • 原文地址:https://www.cnblogs.com/wangyinqian/p/7811719.html
Copyright © 2011-2022 走看看