Javascript Express app.get带“quot;的静态文件&引用;在文件名中
如果Javascript Express app.get带“quot;的静态文件&引用;在文件名中,javascript,node.js,express,Javascript,Node.js,Express,如果文件名不包含特殊字符 例如,localhost/images/myImage.jpg将打印出myImage.jpg 如果filename包含一个文件,例如localhost/images/my.Image.jpg,console将不会打印任何内容。有办法解决这个问题吗 编辑:在下面添加代码。我不知道它是干什么的 app.get('/images/:filename', (req, res, next) => { console.log(req.params.filename);
文件名不包含特殊字符
例如,localhost/images/myImage.jpg
将打印出myImage.jpg
如果filename
包含一个
文件,例如localhost/images/my.Image.jpg
,console将不会打印任何内容。有办法解决这个问题吗
编辑:在下面添加代码。我不知道它是干什么的
app.get('/images/:filename', (req, res, next) => {
console.log(req.params.filename);
const newUrl = `/static/images/${req.params.filename}`;
req.url = newUrl;
next();
});
编辑2:我的坏!就像有人评论的那样,我发现问题其实是服务人员的问题。这显然是在搞缓存
有人能解释一下上面第二段代码中^.+\.$
的作用吗?我会把答案改为那个。我想它是express.js?如果是这样,:parms
不是传递复杂值(例如,比简单字母、ehm、params更复杂的值)的最佳候选者。您可以尝试将其传递给params的isntead,并在客户端和unescape服务器端正确转义它。请参阅此文档:
那不是真的:filename
param应与myImage.jpg
和my.Image.jpg
一起使用。参数中的额外点不影响其工作方式。问题不在发布的代码中,不应影响console.log
调用。请提供,以复制问题。
app.get(
/^.+\.(jpg|jpeg|gif|png|bmp|ico)$/,
(req, res) => {
res.status(404).end();
}
);