【问题标题】:Getting filetype in an Express route在 Express 路由中获取文件类型
【发布时间】:2013-04-26 15:16:06
【问题描述】:

我有一个 Express 路由 /doc/:id,它提供文档的 HTML 表示,我希望它在附加“.epub”时提供 EPUB 表示。但是,Express 不会在句点上分开,所以如果我使用 /doc/:id.epubreq.params.id 设置为“id.epub”。有没有办法将文件扩展名识别为单独的参数,还是我只需要使用正则表达式来提取它?

我查看了res.format,但似乎这仅在设置了Accepted 标头时才有效,据我所知,如果只是将URL 输入浏览器则不会。

【问题讨论】:

    标签: node.js express routes


    【解决方案1】:

    这有效:

    app.get('/doc/:filename.:ext', function(req, res) {
      ...
    });
    

    这要求/doc/ 后面的部分至少包含一个句点,这可能是也可能不是问题。

    【讨论】:

      【解决方案2】:

      根据您描述的行为,我认为您的路由匹配规则可能有问题。

      这行得通:

      app.get('/doc/:id.epub', function(req, res, next){
        res.send('id: ' + req.params.id); //match /doc/x.epub (id=x)
      });
      app.get('/doc/:id', function(req, res, next){
        res.send('id: ' + req.params.id); //match doc/x (id=x) | doc/y.html (id=y.html)
      });
      

      如果 /doc:/:id 是第一个,您将获得 /doc/x.epub 的 x.epub id。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-05-14
        • 2017-02-15
        • 2021-03-11
        • 1970-01-01
        • 1970-01-01
        • 2014-03-29
        相关资源
        最近更新 更多