如何提供静态文件动态?

时间:2013-04-07 12:47:27

标签: node.js static express

例如,我想根据用户访问辅助域名,定位到相应的目录:

app.use(express.static(path.join(__ dirname,'/ public')));

TO:

app.use(express.static(path.join(__ dirname,'/'+ domain +'/ public')));

1 个答案:

答案 0 :(得分:2)

假设您在[domain]/public文件夹中有一个名为“foo.png”的文件。 使用app.use(express.static(path.join(__dirname, '/'+domain+'/public')));可以从http://localhost/foo.png为所有人提供该文件。根据我对你的问题的理解,这不是你想要的。

您应该查找res.sendfile并执行类似

的操作
app.get('/:username/:file', function(req, res){
    res.sendfile(path.join(__dirname, req.params.username, req.params.file));
});

这样您还可以使用中间件添加一些安全性,以确保用户无法访问其他用户的文件。

如果你真的不介意安全问题,你可以简单地在公共文件夹中添加所有用户的文件夹(你可以为该文件夹选择你想要的任何名称),并且只使用app.use(express.static(path.join(__dirname, '/public')));。 / p>

这样您就可以使用http://localhost/[username]/foo.png

之类的内容访问这些文件