如何提供静态文件动态?
问题描述:
例如,我想根据用户访问的二级域名,定位到相应的目录:如何提供静态文件动态?
app.use(express.static(path.join(__ dirname,'/ public'))) ;
TO:
app.use(express.static(path.join(__目录名称, '/' + 域 + '/公共')));
答
假设您在文件夹[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')));
。
这样你就可以访问类似http://localhost/[username]/foo.png
的文件