node.js - 如何使用 NodeJs 重命名 SFTP 上的文件

标签 node.js sftp

有没有办法重命名 SFTP 上的文件?

这是我用来下载的,我使用的是scp2 Node 模块:

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,
    });

最佳答案

您可以使用以下代码行重命名文件: 您可以使用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模块以同样的方式实现这一点。

关于node.js - 如何使用 NodeJs 重命名 SFTP 上的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38659542/

相关文章:

node.js - 从 GitHub 到 Azure 的 Travis CI 部署回归! [远程拒绝] HEAD -> master(不允许浅更新)

python - Paramiko/pysftp 连接失败并显示 "Negotiation failed/invalid DH value",但是 GUI 和 sftp 可以连接

unix - 获取SFTP命令的返回码

c# - 仁慈SSH.NET : character encoding when uploading files

python - 如何在Python中将Windows文件夹中的所有文件上传到SFTP文件夹

python - Snakemake:本地计算机上的SFTP

javascript - 我无法将数据插入我的数据库(mysql)

node.js - Node.js async eachLimit 在这种情况下如何工作?

node.js - 使用 javascript/NodeJS 连接到 MS Exchange Server

node.js - 使用 express.js 和 PostgreSQL 的 rest api