Node.js Busboy 分别解析字段和文件
Posted
技术标签:
【中文标题】Node.js Busboy 分别解析字段和文件【英文标题】:Node.js Busboy parse fields and files seperatly 【发布时间】:2014-04-15 16:21:51 【问题描述】:我想知道是否可以让 Busboy 分别解析字段和文件。 (我已经删除了bodyParser
,因为你可以很容易地用临时文件填充硬盘。)
例如 - 解析器发布字段的中间件(用于所有 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 已在中间件中运行。
【问题讨论】:
您找到解决方案了吗?我有同样的用例,想在我的模型中解析文件,但是在到达路由之前将字段作为中间件来填充 req.body。 我正在为此寻找解决方案。有更新吗? 我不确定我是否正确理解了这个问题,但在 Express 4 中,Multer 单独处理文件上传。 【参考方案1】:代替
form.on('finish', function ()
next();
);`
尝试一下
form.on('end', function ()
next();
);`
【讨论】:
以上是关于Node.js Busboy 分别解析字段和文件的主要内容,如果未能解决你的问题,请参考以下文章
错误 - ./node_modules/busboy/lib/main.js:1:0 找不到模块:无法解析“fs”