首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Ssh2-sftp-客户端Get请求node.js

Ssh2-sftp-客户端Get请求node.js
EN

Stack Overflow用户
提问于 2017-08-22 17:04:22
回答 1查看 7.9K关注 0票数 1

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

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

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

当文件保存时,它并不保存服务器上的文件内容,只是保存对象对象

代码语言:javascript
复制
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');
});

怎样才能让它保存文件的内容?

任何帮助或在正确方向上的推动都将是非常感谢的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-08-22 18:06:06

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

代码语言:javascript
复制
sftp.get(root+"/"+name).then((stream) => {
  stream.pipe(fs.createWriteStream(local+name));
});

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

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45813289

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档