【问题标题】:When sending FormData with a file and field, busboy only fires the file event当发送带有文件和字段的 FormData 时,busboy 只触发文件事件
【发布时间】:2016-07-02 19:10:53
【问题描述】:

我正在将带有文件和字段的 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(...){...}

关于服务器url路由:

我使用配置的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');
}

我的问题是我只得到“文件被解雇”。如果我取出文件侦听器,那么我将被“解雇”。有谁知道为什么只有文件被这个设置触发?此外,我现在使用的唯一其他中间件是 cookieParserexpressSession 和护照。

【问题讨论】:

    标签: javascript node.js busboy


    【解决方案1】:

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

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

    这解决了我的问题。

    【讨论】:

      猜你喜欢
      • 2020-12-22
      • 2017-08-16
      • 2021-10-15
      • 2018-11-14
      • 1970-01-01
      • 1970-01-01
      • 2019-02-01
      • 1970-01-01
      • 2015-03-25
      相关资源
      最近更新 更多