我在用着multer
作为 Express 4 的多部分中间件。
Express 配置为使用护照作为身份验证中间件,但如果用户未经身份验证,我找不到阻止文件上传的方法。
我想使用 onFileUploadStart 来拒绝该文件,但我找不到与“请求”对象,用它可以匹配用户。
下面的代码用于配置express与multer:
...
// Multipart file upload
app.use(multer(
{
dest: wwwroot + path.sep + 'uploaded' + path.sep,
onFileUploadStart: function (file) {
//TODO : apply security check : user auth, file size, number...
console.log(file.fieldname + ' is starting ...')
},
onFileUploadComplete: function (file) {
console.log(file.fieldname + ' uploaded to ' + file.path)
}
}));
...
app.use(passport.auth.initialize());
app.use(passport.auth.session());
EDIT
我将在下面留下答案,以防有帮助,但答案实际上非常简单:您需要将两个调用移至app.use(passport)
above打电话给app.use(multer)
。快递链中的每个步骤都是按顺序处理的,因此如果您希望拒绝错误的身份验证尝试,请执行此操作before您处理传入的文件上传。
可能有更好的方法来做到这一点,但这应该可以帮助您入门。更改您的快速配置以使用闭包,您将拥有对req
多变的。
app.use(function(req, res, next) {
var handler = multer({
dest: wwwroot + path.sep + 'uploaded' + path.sep,
onFileUploadStart: function (file) {
// You now have access to req
console.dir(req);
console.log(file.fieldname + ' is starting ...')
},
onFileUploadComplete: function (file) {
console.log(file.fieldname + ' uploaded to ' + file.path)
}
});
handler(req, res, next);
});
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)