Express.js和multer:如何知道文件何时全部上传?

ugl*_*ode 6 javascript express multer

我正在使用Multer模块上传文件.虽然一切正常但是在github页面的末尾有一个警告,上面写着:"警告:文件上传完成后req.body被完全解析.过早访问req.body可能会导致错误."

这让我非常担心.我找不到让.post中间件知道何时上传文件并且req.body准备好使用的方法.这是我的代码:

app.js:

app.use(multer({ 
        dest: './uploads/',
        rename: function (fieldname, filename) {
            return filename.replace(/\W+/g, '-').toLowerCase() + Date.now();
        },
        putSingleFilesInArray: true       
        })
);
Run Code Online (Sandbox Code Playgroud)

upload.js:

router.route('/')
    .get(function(req, res){
        res.render('uploads');
    })
    .post(function(req, res){
        //how to wait here for the file to upload?
    });
Run Code Online (Sandbox Code Playgroud)

虽然我知道onParseEnd,但我不知道如何实现它,所以我至少有一些关于上传过程的信息.

mik*_*jov 5

Multer是路由器链的一部分.这意味着express将首先执行multer,并且只有multer完成解析表单后才会继续执行到.post()处理程序.页面上的警告用于访问req.bodymulter回调,类似onFileUploadData()和类似.因此,执行顺序是:

  • onParseStart
  • onFileUploadStart/onFileUploadData ...
  • onFileUploadComplete
  • onParseEnd
  • 你的.post()经纪人