在busboy文件上传中出现"多部分数据的意外结束"错误

spa*_*rks 6 node.js express multer busboy

我正在使用connect-busboy在node/express app上传文件.问题有时它可以正常工作(文件上传得非常好),有时我会收到错误Unexpected end of multipart data并且应用程序崩溃.这可能是导致此错误的原因?此外,任何有关如何调试此功能的帮助将不胜感激.我正在使用node version 5connect-busboy": "0.2.14"提前谢谢你

router.route('/images')    
  .post (function(req, res) {

  var fstream;
  req.busboy.on('file', function (fieldname, file, filename) {

    fstream = fs.createWriteStream(__dirname + '/public/img/'+ filename);
    file.pipe(fstream);
    file.on('end', function() {
      console.log('File [' + fieldname + '] Finished sucessfully');
     });
    fstream.on('error',function(err){
      console.log('fstream error' + err);
      file.unpipe();
    });
    fstream.on('close', function () {
      res.status(200);
      res.json({ message: 'File uploaded' });

    });
  });
  req.pipe(req.busboy);

});
Run Code Online (Sandbox Code Playgroud)

这是我得到的错误

throw er; // Unhandled 'error' event
: Error: Unexpected end of multipart data
2017-05-07T20:28:27.599826+00:00 app[web.1]:     at 
/app/node_modules/busboy/node_modules/dicer/lib/Dicer.js:62:28
Run Code Online (Sandbox Code Playgroud)

Dou*_*urn 2

对我来说,当我在客户端格式化帖子正文时使用\n换行符而不是换行符时,我收到了此错误。\r\n

当我修复换行符时(如下面的代码所示),它起作用了。

fetch('/api/upload', 
  { method: 'POST',
    credentials: 'include',
    headers: {'Content-type': 'multipart/form-data; boundary=XXX' },
    body: '--XXX\r\nContent-Disposition: form-data; name="file"; filename="filename.csv"\r\nContent-Type: text/csv\r\n\r\nA,B,C\r\n1,1.1,name1\r\n2,2.2,name2\r\n\r\n--XXX--'
  });
Run Code Online (Sandbox Code Playgroud)