服务员不开火场,文件事件

Pra*_*tel 5 node.js express busboy

在下面的代码中,仅调用完成事件。


var Busboy = require('connect-busboy');

app.use(Busboy());

app.post('/fileupload', function(req, res) {
  var fstream;

  req.pipe(req.busboy);

  req.busboy.on('error', function(err){
    console.log(err);
  });

  req.busboy.on('field', function(fieldname, val, valTruncated, keyTruncated) {
    console.log("fieldname: " + fieldname); 
  });

  req.busboy.on('file', function (fieldname, file, filename) {
    console.log("filename: " + filename); 
    fstream = fs.createWriteStream(__dirname + '/files/' + filename);
    file.pipe(fstream);
    fstream.on('close', function () {
      res.redirect('back');
      console.log("fileupload end");
    });
  });

  req.busboy.on('finish', function() {
    console.log('Done parsing form!');
  });
});
Run Code Online (Sandbox Code Playgroud)

msc*_*dex 4

您看不到任何数据的原因是因为您已经在使用该multer模块,该模块还解析multipart/form-data请求,将文件保存到磁盘。如果您没有使用multer并且想要按照代码中所示手动使用busboy,则需要删除该app.use(multer());行。