首页 > 解决方案 > Node Js 在每个路径上发送文件

问题描述

我有以下问题。我有一个图像文件夹,我不想输入每个图像作为响应

我试过了,但没有用

app.get('/pics/:id', function(req, res) {
console.log("Pic requested")
res.sendFile(__dirname +:/pics/:id);
});

我希望你能帮帮我

标签: node.jsimageresponse

解决方案


你在你的问题中显示的是一个 SyntaxError ,我不知道你为什么显示:pics,但我会假设你只是犯了一个错误,在那里将它复制到问题中,你想要的是/pics作为目录和:id作为文件名的值。

为此,您:idreq.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);
        }
    });
});

推荐阅读