变量路由表达问题

时间:2016-10-06 22:01:43

标签: node.js express

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

我想在每个文件夹和子文件夹以及子文件夹中导航...但是我的 GET没有工作

网址:/ home folder1 | folder2 | folder3

我点击Folders1,URL:/ home / folders1 folder1-1 | folder1-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

你能帮帮我吗?

THX

2 个答案:

答案 0 :(得分:0)

这是您的路线参数中的问题。试试这个。

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

为了获得它,你可以使用

req.params[0]

答案 1 :(得分:0)

我试过了:

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

它工作得更好,我可以在很多文件夹中导航但是我想念一些文章,例如“éèöeto......” 是否有可能将此正则表达式反转为全部?

THX