动态express.static()文件夹路径

时间:2018-02-05 13:33:24

标签: node.js express routes

我有一个使用express.static来访问某些用户信息的应用程序,路由逻辑是这样的:

app.get('/principal',function(req,res,next){
    if(req.query.user=='admin'){
        next();
    }else{
        res.send("not allowed");
    }
});
app.use('/principal',express.static('/_site'));

但现在我需要它给所有用户,所以应该是这样的:

 var username = '';
 app.get('/principal',function(req,res,next){
        if(req.query.user){
            username = req.query.user;
            next();
        }else{
            res.send("not allowed");
        }
    });
    app.use('/principal',express.static(username+'/_site'));

我的每个用户名都有一个文件夹,我的express.static()一直在读取用户名var empty。

2 个答案:

答案 0 :(得分:1)

尝试从路由处理程序提供静态文件,使其成为查询用户名的动态:

app.get('/principal',function(req,res,next){
    if(req.query.user){

        // serve static files for usename
        app.use('/principal', express.static(username +'/_site'));

        res.send("allowed");
    }else{
        res.send("not allowed");
    }
});

答案 1 :(得分:0)

我认为你不能用express.static做到这一点。但是,你可以,

app.get('/principal', function(req, res){
    if(req.query.user){
        const username = req.query.user;
        const path = `${username}/boo.js`
        res.sendfile(path, {root: '/_site'});
    }else{
        res.send("not allowed");
    }
});