Express 4 FormData多部分解析POST请求

时间:2015-07-04 21:16:17

标签: javascript node.js express xmlhttprequest multipartform-data

我试图从FormData xhr请求中保存传入的文件,但我甚至无法解析传入的请求。这就是我尝试发送文件的方式:

...
var formData = new FormData();
formData.append(fileType + '-blob', blob);
var request = new XMLHttpRequest();
request.open('POST', url);
request.send(data);
...

这就是我试图抓住它的方式:

var express = require('express');
var router = express.Router();

router.post('/savestream', function(req, res) {
    var body = '';
    req.on('readable', function() {
        body += req.read();
    });
    req.on('end', function() {
        //body = JSON.parse(body);
        console.log(body);
        res.end(body);
    });
});

我也在我的应用中使用bodyParser:

var bodyParser = require('body-parser');
...
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: true }));
...

但是当我试图接收它时,我得到的原始数据如下:

------WebKitFormBoundaryB0wkHt33s0gbqiB3
Content-Disposition: form-data; name="video-blob"; filename="blob"
Content-Type: video/webm

Eߣ@ B��B��B��B�B�@webmB��B��S�g )I�f@(*ױ@B@M�@whammyWA@whammyD�@6T�k@3�@0ׁcŁ��"��@und�@V_VP8%��@VP8����@@���C�u@����@���P�*@�>m6�I�#"� (�in�wa@    ��l����9}�r�d�=���{퓐��'!��NC�l����9}�r�d�=���{퓐��'!��NC�l����9}�r�d�=���{퓐��'!��NC�l����9}�r�d�=���{퓐��'!��NC�l�����
------WebKitFormBoundaryB0wkHt33s0gbqiB3--

我该如何解析它?当我发送json数据时效果很好。

1 个答案:

答案 0 :(得分:4)

body-parser模块目前不提供multipart/form-data解析器。为此,您需要multerbusboy / connect-busboymultipartyformidable等内容。