【问题标题】:ssh2-sftp-client Get request node.jsssh2-sftp-client 获取请求 node.js
【发布时间】:2017-08-22 09:04:22
【问题描述】:

我目前正在尝试使用 ssh2-sftp-client 从 FTP 服务器下载文件。

我可以看到如下代码所示的文件列表,我的问题是下载文件时。

从下面的代码中可以看出,我正在尝试使用 sftp.get 来获取文件的内容并使用节点文件系统来创建文件。

文件保存时不保存服务器上的文件内容,只保存[object Object]

var Client = require('../../node_modules/ssh2-sftp-client');
var sftp = new Client();
var root = '/files';
var fs = require('fs');

sftp.connect({
  host: '192.168.0.1',
  port: '22',
  username: 'user',
  password: 'password'
}).then(() => {
  return sftp.list(root);
}).then((data) => {
  for( var i = 0, len = data.length; i < len; i++) {
    console.log(data[i].name);
    var name = data[i].name;
    sftp.get(root+'/'+name).then((file) => {
      console.log(file);
      fs.writeFile('downloads/'+name, file, function(err) {
      if(err) {
        return console.log(err);
      }
      console.log("The file was saved!");
    });
  })      }
}).catch((err) => {
  console.log(err, 'catch error');
});

我怎样才能得到这个来保存文件的内容?

非常感谢任何帮助或朝着正确方向的推动。

【问题讨论】:

    标签: javascript node.js


    【解决方案1】:

    我通过将 sftp.get 更改为以下内容解决了我的问题:-

    sftp.get(root+"/"+name).then((stream) => {
      stream.pipe(fs.createWriteStream(local+name));
    });
    

    我希望这对可能遇到此问题的其他人有所帮助。

    【讨论】:

    • stream.pipe 不是函数
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-06-20
    • 1970-01-01
    • 2021-09-26
    • 2019-06-20
    • 2022-06-15
    • 1970-01-01
    • 2021-06-28
    相关资源
    最近更新 更多