Express.js在动态路由上提供静态文件
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"))
您可以删除此行
最新文章
- Driller复现
- 卷积神经网络中特征图大小计算公式总结
- Cocos2dx 之 cocosbuilder的使用
- React:Component组件
- MindSpore实现语音指令识别(迁移tf入门教程)
- linux驱动
- 服务器iis短文件名漏洞,IIS短文件名漏洞分析及一个实例
- 我的职场
- APP 专项测试之兼容性测试
- JMeter BeanShell 应用
- TreeSet集合如何保证元素唯一
- SAR成像系列:【5】合成孔径雷达(SAR)成像算法
- 二级计算机考试准考证打印入口
- C# WebForm
- R语言的三种聚类方法
- 最全的静态网站生成器(开源项目)
- CList 用法
- CList POSITION
- DBCC 简介
- sqlDbc.cs