form的方法
let form = new formidable.IncomingForm();console.log(formidable.IncomingForm.prototype);
基本使用
可以设置
form的属性,如maxFields;可以获取
file的属性,如file.size;通过给
form.parse传递回调,可以在解析完成后获得fields和file。
let form = new formidable.IncomingForm();console.log(form);form.parse(req, (err, fields, files) => {console.log(fields);console.log(files);});

监听解析过程中的事件
let form = new formidable.IncomingForm();form.on('progress', function(bytesReceived, bytesExpected) {// 开始解析上传的文件流时触发});form.on('fileBegin', function(name, file) {// 当检测到一个新的文件上传时触发});form.on('field', (field, value) => {// field 为input的name,value 是值});form.on('file', (name, file) => {// name 是文件的名字, file是文件对象});form.on('error', (err) => {});form.on('aborted', () => {});form.on('end', () => {});// 必须调用form.parseform.parse(req);
自定义处理方式
可以重写 form.onPart 方法,来自定义每一部分的处理方式。
每一个表单项或文件就是一个part 。
form.onPart = function(part) {console.log(part);// 每一个表单项或者文件就是一个partStream {domain: null,_events: {},_eventsCount: 0,_maxListeners: undefined,readable: true,headers:{ 'content-disposition': 'form-data; name="file"; filename="2.png"','content-type': 'image/png' },name: 'file',filename: '2.png',mime: 'image/png',transferEncoding: 'binary',transferBuffer: '' }}
可以针对不同的part做不同的处理。
form.onPart = function (part) {console.log(part);if (!part.mime) {form.handlePart(part);} else {part.on('data', (data) => {res.write(data);});}part.on('end', () => {// res.end(result);});}form.parse(req);
