express-parse-multipart
Version:
An Express.js middleware for parsing "multipart/form-data" content type
42 lines (34 loc) • 974 B
JavaScript
const http = require('http');
module.exports = async req => {
const emptyBuffer = Buffer.alloc(0);
if (!(req instanceof http.IncomingMessage)) {
console.error('"req" is not an instance of http.IncomingMessage');
return emptyBuffer;
}
let body = emptyBuffer;
if (Buffer.isBuffer(req.body)) {
body = req.body;
} else if (req.readable
&& req.socket
&& req.socket.readable
&& req.socket.hasOwnProperty('_events')
&& (typeof req.socket._events.data === 'function')
) {
body = await new Promise(resolve => {
const buffers = [];
req.on('data', data => {
buffers.push(data);
});
req.on('end', () => {
resolve(Buffer.concat(buffers));
});
});
} else if (req.body && (typeof req.body === 'object')) {
try {
body = Buffer.from(JSON.stringify(req.body));
} catch (ex) {
console.error(ex);
}
}
return Buffer.isBuffer(body) ? body : Buffer.from(body);
};