Экспресс app.get статический файл с "."в имени файла - PullRequest
0 голосов
/ 28 ноября 2018
app.get('/images/:filename', (req, res, next) => {
  console.log(req.params.filename);
  const newUrl = `/static/images/${req.params.filename}`;
  req.url = newUrl;
  next();
});

Приведенный выше код работает нормально, если filename не содержит специального символа .

Например, localhost/images/myImage.jpg выведет myImage.jpg.

Если filename содержит ., например localhost/images/my.Image.jpg, консоль ничего не распечатывает.Есть ли способ это исправить?

Редактировать: Добавлен код ниже.Я не уверен, что он делает.

app.get(
    /^.+\.(jpg|jpeg|gif|png|bmp|ico)$/,
    (req, res) => {
        res.status(404).end();
    }
);

Редактировать 2: Мой плохой!Как чей-то комментарий, я обнаружил, что проблема была на самом деле от работника службы.По-видимому, это было связано с кэшированием.

Может ли кто-нибудь объяснить, что ^.+\.$ делает во втором фрагменте кода выше?Вместо этого я отмечу ответ для этого.

Ответы [ 2 ]

0 голосов
/ 28 ноября 2018

Пожалуйста, обратитесь к этой документации:

Обслуживание статических файлов в Express

0 голосов
/ 28 ноября 2018

Я предполагаю, что это express.js?Если это так, :parms - не лучший кандидат для передачи сложных значений (например, что-то более сложное, чем простые alphaliteral, эм, params).Вы можете попытаться передать его в req.query вместо params и корректно экранировать его на стороне клиента и на стороне сервера

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...