javascript - Busboy不会收到上传的文件

标签 javascript node.js express busboy

我的表格很简单。它使用 ng-flow处理文件上传:

<form class="form-horizontal" enctype="multipart/form-data">
    <div flow-init="{target: '/test', testChunks: false, query: {'_csrf': '{{csrf}}', 'somestring': 'teststring'} }"
         flow-files-submitted="data.flow.upload()"
         flow-name="data.flow">

         <input type="file" flow-btn/>
    </div>
</form>

选择图像后,ng-flow 将向目标路由执行 POST。看起来图像已发送,因为请求有效负载有很多类似的内容:

1048576
------WebKitFormBoundaryw2YAG9m602ICPd0Q
Content-Disposition: form-data; name="flowCurrentChunkSize"

图像不是很大(~1MB)

在nodejs端(使用express):

var busboy = require('connect-busboy')({
    limits: {
        fileSize: 10 * 1024 * 1024
    }
});
router.post('/test', busboy, function(req, res) {
    console.log('test called');
    console.log(req.busboy);
    if (req.busboy) {
        req.busboy.on('file', function(fieldname, file, filename, encoding, mimetype) {
            console.log("this is fieldname: " + fieldname);
        });
        req.busboy.on('field', function(fieldname, val, fieldnameTruncated, valTruncated) {
            console.log('Field [' + fieldname + ']: value: ' + inspect(val));
        });
    }

    res.json();
});

req.busboy 返回一个充满了东西的对象,但是 req.busboy.on('file'...req.busboy.on( 'field'...) 永远不会触发。

为什么公交车男孩看不到我的字符串和图像?

最佳答案

您需要将请求通过管道传递给busboy,以便它可以解析表单:

req.pipe(req.busboy);

关于javascript - Busboy不会收到上传的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29637536/

相关文章:

javascript - require() 的顺序似乎会影响模块

javascript - Div 大于表格单元格

javascript - Nodejs - 使用 'private key' 编码为 Base64 并且只能在服务器中解码

node.js - 将特定 Node 版本与特定 npm 版本结合使用

angularjs - 不带扩展名的 multer 文件

node.js - 使用 Express 进行外部获取请求

javascript - Node Js Express 路由器不工作

javascript - 如何使用 $.Ajax 将 Windows 身份验证凭据传递给 Web API 服务

javascript - WebStorm 识别 Protractor 配置选项

node.js - 给定 sql server 查询的等效 Sequelize 操作