从Node.js中的Buffer解析multipart / form-data

时间:2015-08-25 13:12:42

标签: javascript node.js

我有一个缓冲区,我知道它是multipart/form-data有效载荷,我也提前知道HTTP Content-Type标头,包括边界。

node-formidable等模块只能在http请求流上运行,所以我感兴趣的是如何同步解析多部分有效负载?

1 个答案:

答案 0 :(得分:6)

查看formidable form.parse()的来源,您应该可以模仿内部的大部分内容。

另一个解决方案可能是使用类似busboy的东西,它会为你提供一个简单的旧解析器流,所以你最终会得到类似的东西:

var Busboy = require('busboy');
var bb = new Busboy({ headers: { 'content-type': '....' } });

bb.on('file', function(fieldname, file, filename, encoding, mimetype) {
  console.log('File [%s]: filename=%j; encoding=%j; mimetype=%j',
              fieldname, filename, encoding, mimetype);
  file.on('data', function(data) {
    console.log('File [%s] got %d bytes', fieldname, data.length);
  }).on('end', function() {
    console.log('File [%s] Finished', fieldname);
  });
}).on('field', function(fieldname, val) {
  console.log('Field [%s]: value: %j', fieldname, val);
}).on('finish', function() {
  console.log('Done parsing form!');
});

bb.end(someBuffer);