使用文件和字段发送FormData时,busboy仅触发文件事件

时间:2016-07-02 19:10:54

标签: javascript nodes busboy

我将带有文件和字段的FormData发送到我服务器上的路由,但是我无法通过connect-busboy来触发这两个事件。

在客户端,我有:

var data = new FormData();
data.append('file', MyFile);
data.append('key_one', 'value_one');

我正在使用fetch,然后我将数据分配给fetch对象的body属性。

fetch(url, {

method: 'POST',
body: data

}).then(...){...}.catch(...){...}

在服务器网址上:

我使用配置了

的busboy中间件
limits: {fileSize: 5 * 1024 * 1024, parts: 2}

然后我有,

req.pipe(req.busboy);

req.busboy.on('field', function(key, value){
    console.log('field fired');
}

req.busboy.on('file', function(fieldname, file, filename){
    console.log('file fired');
}

我的问题是我只是被解雇了#39;。如果我取出文件监听器,那么我将被解雇#39;。有谁知道为什么只有文件被这个设置解雇?此外,我现在使用的唯一其他中间件是cookieParser,expressSession和passport。

谢谢!

1 个答案:

答案 0 :(得分:1)

再看一下文档,我意识到我需要处理可读流。在我的情况下,“文件”是流。

req.busboy.on('file', function(fieldname, file, filename){
    console.log('file fired');
    file.resume();
}

这解决了我的问题。