I have a Buffer which I know is a multipart/form-data
payload, and I also know the HTTP Content-Type
header in advance, which includes the boundary.
There are modules such as node-formidable which work only on http request streams, so what I'm interested in is how to parse a multipart payload synchronously?
Looking at the source for formidable
's form.parse()
, you should be able to do mimic most of what it's doing internally.
Another solution might be to use something like busboy
which gives you a plain old parser stream to write to, so you might end up with something like:
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);
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With