节点 Js 在每个路径上发送文件
Node Js send File on every Path
我有以下问题。我有一个图像文件夹,我不想输入每张图像作为响应
我试过了,但没用
app.get('/pics/:id', function(req, res) {
console.log("Pic requested")
res.sendFile(__dirname +:/pics/:id);
});
希望你能帮帮我
你在问题中显示的是 SyntaxError,我不知道你为什么显示 :pics
,但我假设你只是在将它复制到问题中时犯了一个错误,而你想要的是 /pics
作为目录,:id
值作为文件名。
要做到这一点,您从 req.params.id
获得 :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);
}
});
});
我有以下问题。我有一个图像文件夹,我不想输入每张图像作为响应
我试过了,但没用
app.get('/pics/:id', function(req, res) {
console.log("Pic requested")
res.sendFile(__dirname +:/pics/:id);
});
希望你能帮帮我
你在问题中显示的是 SyntaxError,我不知道你为什么显示 :pics
,但我假设你只是在将它复制到问题中时犯了一个错误,而你想要的是 /pics
作为目录,:id
值作为文件名。
要做到这一点,您从 req.params.id
获得 :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);
}
});
});