Node.js Express JS通过GET端点服务公用文件夹
我有一个名为Node.js Express JS通过GET端点服务公用文件夹,node.js,rest,express,Node.js,Rest,Express,我有一个名为my folder的文件夹,里面是不同的文件夹,我尝试提供HTML和JS和CSS等资产。当我使用Express JS进入路线时,我尝试: router.get('/service/test',(req,res)=>{ app.use(express.static(path.join(uu dirname,'my folder/test/public')) }) my folder的内部是各种文件夹,每个文件夹中都有不同的文件夹,我希望能够从my folder中的任何文件夹中为文件夹
my folder
的文件夹,里面是不同的文件夹,我尝试提供HTML和JS和CSS等资产。当我使用Express JS进入路线时,我尝试:
router.get('/service/test',(req,res)=>{
app.use(express.static(path.join(uu dirname,'my folder/test/public'))
})
my folder
的内部是各种文件夹,每个文件夹中都有不同的文件夹,我希望能够从my folder
中的任何文件夹中为文件夹的public
目录提供服务,以便在转到以下位置时链接到JS、HTML和CSS:
现在,我已经硬编码了一个test
文件夹,但这将通过一个参数进行更改
如果您事先知道父文件夹,您会想到为什么这样做不起作用吗?。您可以使用多个
express.static
外部router.get
。像这样:
app.use(express.static(path.join(__dirname, 'my-folder/test/public')))
app.use(express.static(path.join(__dirname, 'my-folder/test2/public')))
...
app.get(...)
如果您事先不知道文件夹名称,则需要将其构建为路由,并使用res.sendFile
返回文件:
app.get('/my-folder/:uid/*', function(req, res){
var uid = req.params.uid, path = req.params[0] ? req.params[0] : 'index.html';
res.sendFile(path, {root: `./my-folder/${uid}/public/`});
});
上面的示例将提供请求的路径文件或“index.html”,如果没有提供路径。您认为我可以做什么:
express.static(“我的文件夹”/**/public”)
,因为我需要这里的任何文件夹。我需要在它自己的端点上提供服务,而不是在/
上。文件夹名称未知,并且是使用UUID生成的,例如:c963420f-855b-4903-845a-9d998f320b24
,因此可能有一个文件夹,可能有100个文件夹,我需要服务于一个特定的文件夹,例如:这将服务于该目录的公用文件夹你是一个明星!这太棒了!看起来我缺少了root
选项?可能是的,root
现在是必需的,因为安全原因,自上一版本的Express以来。请注意,我在代码中做了一些更改,这样用户就不需要在URL中包含“public”,现在可以从其自己的“public”文件夹中获取文件。