2016-07-29 46 views
1

有什么方法可以重命名SFTP上的文件?如何使用NodeJs重命名SFTP上的文件

这是我使用的下载,我使用scp2节点模块:

client.scp({ 
    'host': this.host, 
    'username': this.username, 
    'password': this.password, 
    'path': path 
    },'./', function(err) { 
    if (err){ 
     return callback("File: "+path+" "+err); 
    }else{ 
     return callback(null); 
    } 
    }); 

也许我可以下载文件,与另一名上传并从SFTP旧的。但这并不完整。

我已经看过其他模块,如:https://www.npmjs.com/package/sftpjs,有一些重命名功能实现,但我不能使它的工作。任何建议?这是非常明显的用例,我找不到任何东西。

编辑: 维杰的回答是正确的。我只是做错了。

我的代码:

// Download swush file from SFTP 
    var Client = require('sftpjs'); 
    var c = Client(); 

    c.on('ready', function() { 
     c.list(function (err, list) { 
     if (err) throw err; 

     console.dir(list); 

     c.end(); 
     }); 
    }).connect({ 
     'host': this.host, 
     'username': this.username, 
     'password': this.password, 
    }).rename(path.concat(oldName), path.concat(newName), function(err){ 
      if (err){ 
       console.log("Error when renaming file: "+err) 
      }else{ 
       console.log("Renaming file successful."); 
      } 
    }); 

工作代码:

// Download swush file from SFTP 
    var Client = require('sftpjs'); 
    var c = Client(); 

    c.on('ready', function() { 
     c.rename(path.concat(oldName), path.concat(newName), function(err) {//only one parameter err is available for rename method. 
     if (err){ 
       console.log("Error when renaming file: "+err) 
      }else{ 
       console.log("Renaming file successful."); 
      } 
     }); 
    }).connect({ 
     'host': this.host, 
     'username': this.username, 
     'password': this.password, 
    }); 

回答

1

可以使用的代码下面几行重命名文件: 您可以使用https://github.com/mscdex/node-ftp在重命名文件中获取成功。

var Client = require('ftp'); 

var c = new Client(); 
c.on('ready', function() { 
    c.rename('foo.txt', 'foo-new.txt', function(err) {//only one parameter err is available for rename method. 
     if (err) throw err; 
     console.log("rename completed"); 
    }); 
}); 
c.connect({ 
host : host, 
user : user, 
password : password 
}); 

您还可以使用node-sftpjs模块以相同的方式实现此目的。

+1

令人惊叹!谢谢。请检查编辑,为了它的乐趣;) –

+1

好的,谢谢。你介意告诉我为什么它没有新的关键字工作? –

+1

请阅读http://stackoverflow.com/questions/1646698/what-is-the-new-keyword-in-javascript。这是最好的解决方案。 –