Express.js在动态路由上提供静态文件

编程入门 行业动态 更新时间:2024-10-05 19:09:38

Express.js在动态<a href=https://www.elefans.com/category/jswz/34/1771390.html style=路由上提供静态文件"/>

Express.js在动态路由上提供静态文件

我有以下app.js代码;

app.use(express.static(__dirname + "/public"));
app.use("/example", express.static(__dirname + "/public"));

app.engine("html", require("ejs").renderFile);

app.get("/", (req, res) => res.render("index.ejs"));
app.get("/example", (req, res) => res.render("example.ejs"));

app.get("/example/:id", (req, res) =>
  res.render("exampleView.ejs", {
    id: req.params.id,
  })
);

并且在我的exampleView.ejs文件中,如果我使用以下图像标记,它会起作用

<img src="/SampleImage.jpg">

但是,如果我在没有/的情况下使用它,它将无法正常工作。不能选择使用它,因为它会破坏其他包含的视图文件。

我怀疑第二行是问题,所以我尝试了以下替代方法,

app.get("/example", (req, res) => res.render("example.ejs"));
app.get("/example/*", (req, res) => res.render("/example.ejs"));
app.get("/example", (req, res) => res.render("/*/example.ejs"));

但还是不好。

回答如下:
<img src="SampleImage.jpg">

将尝试在当前路线中找到图像,在您的情况下为'/example/SampleImage.jpg',而图像位于'/SampleImage.jpg'内部。

app.get("/example/:id", ()=>{}) 

将强制所有文件都放在/example/...中。如果要动态重定向到该路径,可以这样编写:

app.use('*.jpg', (req, res, next) => {
    const subRoutes = req.path.split('/')
    const imageFileName = subRoutes[subRoutes.length - 1]
    res.redirect(`/${imageFileName}`)
})
app.use("/example", express.static(__dirname + "/public"))

您可以删除此行

更多推荐

Express.js在动态路由上提供静态文件

本文发布于:2024-05-07 05:54:12,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1754629.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:路由   静态   文件   动态   Express

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!