Busboy: Node.js 流式 HTML 表单解析器

Busboy 是一个 Node.js 模块,用于解析传入的 HTML 表单数据,需要 v4.5.0 或更高版本的 Node.js。

安装:

npm install busboy

使用示例 (解析多部分表单数据):

const http = require('http');
const inspect = require('util').inspect;
const Busboy = require('busboy');

http.createServer((req, res) => {
  if (req.method === 'POST') {
    const busboy = new Busboy({ headers: req.headers });

    busboy.on('file', (fieldname, file, filename, encoding, mimetype) => {
      console.log('File [' + fieldname + ']: filename: ' + filename + ', encoding: ' + encoding + ', mimetype: ' + mimetype);

      file.on('data', (data) => {
        console.log('File [' + fieldname + '] got ' + data.length + ' bytes');
      });

      file.on('end', () => {
        console.log('File [' + fieldname + '] Finished');
      });
    });

    busboy.on('field', (fieldname, val, fieldnameTruncated, valTruncated, encoding, mimetype) => {
      console.log('Field [' + fieldname + ']: value: ' + inspect(val));
    });

    busboy.on('finish', () => {
      console.log('Done parsing form!');
      res.writeHead(303, { Connection: 'close', Location: '/' });
      res.end();
    });

    req.pipe(busboy);
  } else {
    res.writeHead(404);
    res.end();
  }
}).listen(8000, () => {
  console.log('Server listening on http://127.0.0.1:8000/');
});
zip 文件大小:210.35KB