节点 js busboy 不使用 angular js $http post 发出事件

Posted

技术标签:

【中文标题】节点 js busboy 不使用 angular js $http post 发出事件【英文标题】:node js busboy not emitting events with angular js $http post 【发布时间】: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 代码之前的所有请求数据。您还可以通过在开发人员工具中检查浏览器的网络选项卡来验证是否发送了表单数据。 【参考方案1】:

我完全不知道,但是这个问题突然解决了。 我只是添加了一些测试代码。并删除了它们。然后就可以了。 天哪..

【讨论】:

以上是关于节点 js busboy 不使用 angular js $http post 发出事件的主要内容,如果未能解决你的问题,请参考以下文章

Node.js Busboy 分别解析字段和文件

错误 - ./node_modules/busboy/lib/main.js:1:0 找不到模块:无法解析“fs”

Node / Busboy:获取文件大小

在 Angular 6 + 节点 js 中使用令牌的身份验证问题

无法使用 express API 和节点 JS(Angular 4)将数据发布到 mongodb

NodeJS使用busboy上传文件