Node Js отправить файл на каждый путь - PullRequest
0 голосов
/ 05 января 2020

У меня следующая проблема. У меня есть папка с изображениями, и я не хочу вводить каждое изображение в качестве ответа

Я пробовал это, но это не сработало

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

Я надеюсь, что вы можете помочь мне

1 Ответ

0 голосов
/ 05 января 2020

То, что вы показываете в своем вопросе, является 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);
        }
    });
});
...