【发布时间】:2015-02-02 12:38:04
【问题描述】:
Busboy 似乎只是卡在那里。
我已经测试了所有 3 个事件(文件、字段、完成),但没有发出任何内容。
我的角度代码如下。
$http({
method : 'POST',
url : mublAConfig.server + '/api/v3/user/friend',
headers : {
'Content-Type' : 'application/x-www-form-urlencoded',
'Authorization' : access_token
},
transformRequest : function(obj) {
var str = [];
for (var p in obj) {
str.push(encodeURIComponent(p) + '=' + encodeURIComponent(obj[p]));
}
return str.join('&');
},
data : {
id : $scope.writes[0].input,
say : $scope.writes[1].input
}
}).success(function(data) {
console.log('Received data : ', data);
}).error(function(data) {
console.log('Error! ', data);
});
我对 busboy 所做的一切都在下面
req.busboy = new busboy({headers:req.headers});
req.pipe(req.busboy);
req.busboy.on('file', function(field, file, name) {
console.log('file event');
});
req.busboy.on('field', function(name, value) {
console.log('field event');
});
req.busboy.on('finish', function() {
console.log('busboy finished');
});
我该如何解决?
【问题讨论】:
-
我感觉
Content-Type的手动设置和手动数据转换是没有必要的,但是你能做到req.on('data', function(d) { console.dir(d.toString()) })并把它记录到你的控制台吗? -
嗯.. 没有显示。所以问题出在角度部分?
-
只是猜测,您的内容类型应该是 multipart/form-data。
-
试过了,我看到了一个错误。多部分:未找到边界
-
如果您没有看到任何记录到控制台的数据,那么其他东西正在读取您的 busboy 代码之前的所有请求数据。您还可以通过在开发人员工具中检查浏览器的网络选项卡来验证是否发送了表单数据。
标签: javascript angularjs node.js http busboy