首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用于下载和删除文件的节点中的SFTP模块

用于下载和删除文件的节点中的SFTP模块
EN

Stack Overflow用户
提问于 2017-01-14 09:46:12
回答 4查看 11.9K关注 0票数 3

我的任务很简单(或者更好):从Node应用程序中获取SFTP中目录的内容,然后下载其中的所有文件,最后远程删除它们。

现在,我检查了不同的模块。很干净,在我看来,是ssh2-sftp客户端。我可以这样用它:

代码语言:javascript
复制
let Client = require('ssh2-sftp-client');
let sftp = new Client();

sftp.connect({
    host: myhost,
    port: '22',
    username: myusername,
    password: mypassword
}).then(() => {
    return sftp.list('/path/to/my/files');
}).then((data) => {

    for(var i = 0 ; i < data.length; i++) {
        sftp.get('/path/to/my/files/'+data[i].name); 
        }   
}).catch((err) => {
    console.log(err, 'catch error');
});

我可以列出所有文件并在控制台中看到结果的jSon,但是.get命令似乎什么也不做,我也不知道出了什么问题。从文档(https://www.npmjs.com/package/ssh2-sftp-client)中,您可以像我所做的那样简单地获取文件。但是:

( 1)它似乎不起作用。2)如何调试正在发生的事情? 3)如果我没有机会选择本地目录,这些文件很可能是在节点启动js的地方下载的吗?

那么,如果这些文件是通过这个模块成功下载的(如果有的话),如何才能真正下载并可能远程删除这些文件呢?

谢谢,法比奥

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2017-01-14 10:11:42

sftp.get()返回返回流的承诺,因此如果您想将流保存到磁盘中,则需要将其传输。例如:

代码语言:javascript
复制
var fs = require('fs');

// ...

for(var i = 0; i < data.length; i++) {
  const remoteFilename = '/path/to/remote/files/' + data[i].name;
  const localFilename = '/path/to/local/files/' + data[i].name;
  sftp.get(remoteFilename).then((stream) => {
    stream.pipe(fs.createWriteStream(localFilename));
  });
}

而且,ssh2-sftp-client似乎没有使用ssh2模块的最新版本分支(在撰写本文时,版本分支是0.5.x),因此,如果遇到问题,请记住这一点。

票数 4
EN

Stack Overflow用户

发布于 2017-07-02 22:47:05

代码语言:javascript
复制
sftp.get(remoteFileNameWithPath, true).then(stream => {
  stream.pipe(fs.createWriteStream(localFilePath)).on('close', () => console.log('completely passed file'))
})

get方法返回流结果的承诺,因此,为了保存它,您需要管道到nodejs:https://nodejs.org/api/stream.html上的一个https://nodejs.org/api/stream.html检查文档。

票数 1
EN

Stack Overflow用户

发布于 2019-07-16 08:37:50

使用get()方法下载和保存文件

代码语言:javascript
复制
sftp.get(remote_file_path, local_file_path).then((stream) => {
    console.log('File download Success')
}); 

它需要两个param: src和dest文件路径。

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

https://stackoverflow.com/questions/41648624

复制
相关文章

相似问题

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