我正在使用 Multer 模块进行文件上传。虽然一切正常,但在他们的 github 页面末尾有一条警告,内容如下: “警告:req.body 在文件上传完成后被完全解析。过早地访问 req.body 可能会导致错误。”
这让我非常担心。我只是找不到让 .post 中间件知道文件何时上传并且 req.body 可以使用的方法。这是我的代码:
应用程序.js:
app.use(multer({
dest: './uploads/',
rename: function (fieldname, filename) {
return filename.replace(/\W+/g, '-').toLowerCase() + Date.now();
},
putSingleFilesInArray: true
})
);
上传.js:
router.route('/')
.get(function(req, res){
res.render('uploads');
})
.post(function(req, res){
//how to wait here for the file to upload?
});
虽然我知道 onParseEnd,但我不知道如何实现它,所以我至少有一些关于正在完成的上传过程的信息。
最佳答案
Multer 是路由器链的一部分。这意味着 express 将首先执行 multer,只有当 multer 完成对表单的解析后,它才会继续执行到您的 .post()
处理程序。页面上的警告用于从多个回调访问 req.body
,例如 onFileUploadData()
等。因此,执行顺序为:
- onParseStart
- onFileUploadStart/onFileUploadData...
- onFileUploadComplete
- onParseEnd
- 你的
.post()
处理程序
关于javascript - Express.js 和 multer : how to know when the files are all uploaded?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29452651/