Lor*_*oGi 8 node.js express multer
我正在使用multerexpress4作为multipart middelware.
Express配置为使用护照作为auth middelware,但如果用户未经过身份验证,我找不到阻止文件上载的方法.
我想使用onFileUploadStart拒绝该文件,但我找不到带有"request"对象的链接,用它可以匹配用户.
下面的代码用于配置express vs 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());
Run Code Online (Sandbox Code Playgroud)
编辑
我将在下面留下的情况下,它可以帮助,但得到的答复居然是很简单的答案是:你需要在两个通话移动到app.use(passport) 上面调用app.use(multer).快速链中的每个步骤都按顺序处理,因此如果您希望拒绝执行错误的auth尝试,请在处理传入文件上载之前执行此操作.
可能有更好的方法来做到这一点,但这应该让你开始.更改您的快速配置以使用闭包,您将拥有对该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);
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6547 次 |
| 最近记录: |