我在Express.js 4中使用connect-busboy
来上传文件。我在app.js中添加了app.use(busboy({ immediate: true });
我的路由处理程序如下所示:
router.post('/upload', function (req, res) {
var fstream;
req.pipe(req.busboy);
console.log(req.busboy);
req.busboy.on('file', function (fieldName, file, fileName) {
console.log('Uploading ' + fileName + '...');
fstream = fs.createWriteStream(__dirname + '/data/' + fileName);
file.pipe(fstream);
fstream.on('close', function () {
res.end('ok');
});
});
});
console.log(req.busboy);
返回undefined
。为什么呢?!??!
答案 0 :(得分:3)
把它整理出来!事实证明,contentType
应为form/multi-part
,但事实并非如此
答案 1 :(得分:1)
对于多部分表格:
Content-Type: multipart/form-data; boundary=----WebKitFormBoundary63SFlxFGGDbxCqT7
边界是随机生成的,因此为了使其在Node Express中工作,建议将此标头设置为“未定义”,浏览器将负责其余部分。例如:
$http({
method: 'POST',
url: 'http://youurl.com,
data: data,
// Remove the 'Content-Type' header for multipart form submission
headers: { 'Content-Type': undefined },
}).then(function successCallback(response) {
// this callback will be called asynchronously
// when the response is available
}, function errorCallback(response) {
// called asynchronously if an error occurs
});
对于与乔丹有同样问题的人:
“你能否更具体一点。关于什么的内容类型?”
这意味着在从浏览器发送到Web服务器的请求中设置“Content-Type”标头。例如,将内容类型标头设置为JSON如下所示:
Content-Type: application/json; charset=utf-8