节点 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);
        }
    });
});