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