【发布时间】:2017-01-14 09:46:12
【问题描述】:
我的任务很简单(或者更好,应该是):从 Node 应用程序获取 SFTP 中目录的内容,然后下载其中的所有文件,最后远程删除它们。
现在,我检查了不同的模块。在我看来,非常干净的是 ssh2-sftp-client。我可以这样使用它:
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)如果我没有机会选择本地目录,这些文件很可能会在node启动js的地方下载,对吗?
那么,如果使用此模块(或其他模块,如果有的话)成功下载了文件,我如何才能获得实际下载并可能远程删除的文件?
谢谢, 法比奥
【问题讨论】:
-
sftp.get('/path/to/my/files/'+data[i].name)返回一个流。您必须处理该流并将其保存为本地计算机中的文件。 -
谢谢,你能告诉我我可以用来完成这个任务的 sftp 命令,即处理流吗?即使模块没有实现它,我也可以使用 ssh2 基本模块方法。
-
好的...我可以帮你。要将流保存为文件吗?