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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了动态express.static()文件夹路径相关的知识,希望对你有一定的参考价值。

我有一个使用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。

答案

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

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");
    }
});
另一答案

我不认为你可以用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");
    }
});

以上是关于动态express.static()文件夹路径的主要内容,如果未能解决你的问题,请参考以下文章

express紧急回顾随笔

关于app.use('/static', express.static(path.join(__dirname, 'public')))的理解

express.static 和 CSS 文件的 MIME 类型错误

express 4.x 模板引擎与express.static

node+express+static完成简单的文件下载

静态资源访问