javascript - 当发送带有文件和字段的 FormData 时,busboy 仅触发文件事件

标签 javascript node.js 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(...){...}

在服务器 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 和 Passport。

最佳答案

再次查看文档后,我意识到我需要处理可读流。在我的例子中,"file"是流。

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

这解决了我的问题。

关于javascript - 当发送带有文件和字段的 FormData 时,busboy 仅触发文件事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38163601/

相关文章:

node.js - 使用node.js、needle、busboy/multer将文件从一台服务器发送到另一台服务器

node.js - 使用 NodeJS Multer 转换上传

javascript - 空 requestAnimationFrame 循环泄漏内存?

javascript - 有没有办法检测对象的属性何时发生更改?

javascript - Netbeans 项目 - Node.js : Node must be a valid file

node.js - 不支持的内容类型图像/PNG

javascript - 移动页面侧面的白色间隙

javascript - 在 AngularJS 中 Controller 和工厂之间共享 $scope

node.js - 仅当在forever、mon、upstart等下运行时,nodejs内存不足

node.js - 使用 MongoDB 创建数组并推送到数组