2016-07-29 13 views
1

SFTP上でファイルの名前を変更する方法はありますか?SFTP上のファイルをNodeJsで名前を変更するには

これは、私がダウンロードするために使用するものです私は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をご覧ください。ここにはこれに対する最善の解決策があります。 –

関連する問題