如何使用ssh2sftp客户端fastGet下载多个文件



如何使用fastGet下载多个txt文件?我的代码如下:

const Client = require('ssh2-sftp-client');
const sftp = new Client();
sftp.connect(configs)
.then(() => {
return sftp.list('.');
})
.then(files => {
files.forEach(file => {
if(file.name.match(/txt$/)){
const remoteFile = // remote file dir path
const localFile = // local file dir path
sftp.fastGet(remoteFile, localFile).catch(err => console.log(err));
}
});
})
.catch(err => console.log(err))
.finally(() => {
sftp.end();
});

我一直收到一个没有sftp连接可用的错误。我很确定我在sftp.fastGet中做错了一些事情,但不知道从哪里开始。

您的代码中似乎存在多个问题:

  1. loop直通文件应在第一个then块本身中执行
  2. sftp.fastGet返回promise,因此它是asynchronous操作,在forEach循环中执行asynchronous操作不是一个好主意

我建议用以下更改更新您的代码:

sftp.connect(configs)
.then(async () => {
const files = await sftp.list('.');
for(const file in files){
if(file.name.match(/txt$/)){
const remoteFile = // remote file dir path
const localFile = // local file dir path
try {
await sftp.fastGet(remoteFile, localFile)
}
catch(err) { 
console.log(err))
};
} 
}
})
.catch(err => console.log(err))
.finally(() => {
sftp.end();
});

相关内容

  • 没有找到相关文章

最新更新