formidable
安装
1 | $ npm install formidable |
使用
1 | var formidable=require("formidable"); |
API
form的属性及方法
encoding 设置字符集 默认UTF-8
uploadDir 默认文件上传缓存位置 默认为OS_TEMP位置
type 选择接受是multipart还是urlencoded的Content-Type请求头 默认全部
- 我之前写过一篇介绍 HTTP头Content-Type 的文章
maxFieldSize 限制文件大小 默认 2mb 单位 字节
maxDields 限制header Format长度 默认为1000 为0则不限制
multiples 一次上传多个文件 默认为false 需要在input标签设置HTML5属性 multiple
hash
bytesReceived 目前接收到的字节数。
bytesExpected 预定总大小 字节
parse(req,[cb])
- req 是
HttpIncomingMeassage
对象 - cb 为callback函数 function(err,field,files)
- err 错误
- field 对象 是http请求Format的键值对即application/x-www-urlencoded内容
- files 接收到的文件对象(当接受多个文件时为一个数组)
- files.size 文件大小 单位是字节
- files.path 缓存的目录及名字
- files.name 上传时候的文件名
- files.type 文件后缀类型
image/gif
之类 - files.mtime 最后修改时间
事件
form.on('event',function(){})
- progress
- .on(‘progress’,function(bytesReceived,bytesExpected){})
- field
- .on(‘field’,function(name,value){})
- fileBegin
- .on(‘fileBegin’,function(name,value){})
- file
- .on(‘file’,function(name,file){})
- error
- .on(‘error’function(err){})
- aborted
- .on(‘aborted’,function(){})
- end
- .on(‘end’,function(){})
- req 是
DEMO
客户端
demo.html
1 | <form action="post" enctype="multipart/form-data" method="post"> |
服务端
app.js
1 | var http = require("http"); |
运行
1 | $ node app.js |