【问题标题】:Parsing form-data using Meteor使用 Meteor 解析表单数据
【发布时间】:2014-12-09 05:26:11
【问题描述】:
我在使用 Meteor 解析 multipart/form-data 时遇到问题
这是我的路线:
this.route('mail', {
where: 'server',
path: '/mail',
action: function () {
console.log(this.request.body);
this.response.end('get request\n');
}
});
urlEncoded 和 JSON 数据工作正常
【问题讨论】:
标签:
node.js
express
meteor
iron-router
【解决方案1】:
这是 Iron-router 解析 multipart/form-data 中的一个错误:
https://github.com/EventedMind/iron-router/issues/909
同时可以使用 Busyboy 模块解决:
var Busboy = Meteor.npmRequire("busboy")
var fs = Npm.require("fs");
var os = Npm.require("os");
var path = Npm.require("path");
Router.onBeforeAction(function (req, res, next) {
var filenames = []; // Store filenames and then pass them to request.
if (req.method === "POST") {
var busboy = new Busboy({ headers: req.headers });
busboy.on("file", function (fieldname, file, filename, encoding, mimetype) {
var saveTo = path.join(os.tmpDir(), filename);
file.pipe(fs.createWriteStream(saveTo));
filenames.push(saveTo);
});
busboy.on("field", function(fieldname, value) {
req.body[fieldname] = value;
});
busboy.on("finish", function () {
// Pass filenames to request
req.filenames = filenames;
next();
});
// Pass request to busboy
req.pipe(busboy);
} else {
next();
}
});