node.js - Node Js 在每个路径上发送文件
问题描述
我有以下问题。我有一个图像文件夹,我不想输入每个图像作为响应
我试过了,但没有用
app.get('/pics/:id', function(req, res) {
console.log("Pic requested")
res.sendFile(__dirname +:/pics/:id);
});
我希望你能帮帮我
解决方案
你在你的问题中显示的是一个 SyntaxError ,我不知道你为什么显示:pics
,但我会假设你只是犯了一个错误,在那里将它复制到问题中,你想要的是/pics
作为目录和:id
作为文件名的值。
为此,您:id
从req.params.id
.
所以改变这个:
res.sendFile(__dirname + ":/pics/:id");
对此:
res.sendFile(__dirname + "/pics/" + req.params.id);
但是,这可能是一个安全问题,因为您需要从参数中删除诸如./
和之类的内容../
,以确保攻击者无法请求他们不应被允许访问的文件。您可以使用该dotfiles: "deny"
选项res.sendFile()
来强制执行。如果指定的文件名不存在,您可能还需要一些错误处理:
app.get('/pics/:id', function(req, res) {
console.log("Pic requested");
res.sendFile(__dirname + "/pics/" + req.params.id, {dotfiles: "deny"}, (err) => {
if (err) {
res.sendStatus(404);
}
});
});
推荐阅读
- maven - maven:如何清理本地仓库中的旧快照?
- sql - 如何连接 SQL 中乱序的字符串的碎片消息
- firebase - 在颤动中增加firebase字段值?
- sql-server - 我的代码中断栏中的这个黑旗是什么?
- reactjs - AEM 6.2 和 ReactJS 路由
- matlab - 提取由黑线绘制的区域
- android - 在使用 gradle 构建工具开发 android 应用程序中配置 project:app 时发生错误
- c - 在 R 包 MASS 中找不到 vmmin() 的定义
- mongodb - 获取用户名作为聚合变量
- c# - 使用我的 Firebase URL 获取 400(错误请求)