【问题标题】:Variable routing express issue可变路由快递问题
【发布时间】:2016-10-07 07:32:04
【问题描述】:

我正在使用 nodeJS 和 express 开发一个 SFTP 仪表板。 但是我的根有问题。

我想在每个文件夹、子文件夹和子子文件夹中导航……但我的 GET 不起作用

网址:/home 文件夹1 |文件夹2 |文件夹3

我点击 Folders1,网址:/home/folders1 文件夹1-1 |文件夹 1-2 ...

下一个网址:/home/folders1/folder1-2

我做了这条路线:

.get('/home/:file(.+)', function(req, res){

   conn.sftp(function(err, sftp){
    if (err) throw err;

    console.log('SFTP connexion ok')
    console.log(req.params.file)

    sftp.readdir('/'+ req.params.file, function(err, list) {
        if (err) throw err;

        var foldersList = []; 
        var filesList = [];

        list.forEach(function(value, key){
            if(value.longname.substring(0,1) == 'd'){
                foldersList.push(value)
            }
        })
        list.forEach(function(value, key){
            if(value.longname.substring(0,1) != 'd'){
                filesList.push(value)
            }
        })
        res.render('folders.ejs', { foldersList : foldersList, filesList : filesList, path : req.path })
    })
})})

但是当我点击 /home/folder1 时:

无法获取 /home/files2

你能帮帮我吗?

谢谢

【问题讨论】:

    标签: node.js express


    【解决方案1】:

    你的路由参数有问题。试试这个。

    .get(/\/home\/([file].+)/, function(req, res){
    

    为了得到它,你可以使用

    req.params[0]
    

    【讨论】:

    • 谢谢你,我正在进入 GET。但是我现在如何获取参数“:file”?
    • @TzanaOverflow 修复了正则表达式并添加了获取参数的方式。
    【解决方案2】:

    我试过了:

     .get('/home\/:file([a-zA-Z.0-9-\/_!]+)', function(req, res){
    

    效果更好,我可以在很多文件夹中导航,但我错过了一些字符,例如“éèö etc...” 是否可以反转此正则表达式以获取所有内容?

    谢谢

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-03-11
      • 2021-04-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-05-09
      • 2020-02-08
      • 2020-01-05
      相关资源
      最近更新 更多