Node.js Busboy分离字段和文件

我想知道是否有可能让Busboy分别parsing字段和文件。 (我已经删除了bodyParser因为你可以很容易地用临时文件填充硬盘。)

例如 – parsing器发布字段的中间件(用于所有POST请求)

 if (req.method === 'POST') { var form = new busboy({ headers: req.headers, limit: { files: 0 } }); form.on('field', function (fieldname, val, valTruncated, keyTruncated) { req.params.body[fieldname] = val; }); form.on('finish', function () { next(); }); return req.pipe(form); } else { next(); } 

然后在上传页面使用以下,它使用Busboy获取张贴的文件。

 app.post('/fm/file/upload/:folder', function (req, res) { var isFrame = helpers.toBool(req.param('frame'), false), uploadService = fmUploadService.create(), userId = res.locals.info.User.Id, folder = helpers.toInt(req.param('folder', 0)); uploadService.processUploads(userId, folder, req, res, function (uploadError, allowedAccess, files) { if (uploadError) { if (req.xhr) { res.status(500); res.json(uploadError); } else { res.render('filemanager/file_upload.jade', { actionUrl: '/fm/file/upload/' + folder, tempData: files, isFrame: isFrame, err: uploadError }); } return; } else if (req.xhr) { res.status(200); res.json(files); return; } res.render('filemanager/file_upload.jade', { actionUrl: '/fm/file/upload/' + folder, tempData: files, isFrame: isFrame, err: null }); }); }); 

目前文件将始终为0,因为Busboy已经在中间件中运行。

代替

 form.on('finish', function () { next(); });` 

尝试一下

 form.on('end', function () { next(); });`