如何使用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中做错了一些事情,但不知道从哪里开始。
您的代码中似乎存在多个问题:
loop
直通文件应在第一个then
块本身中执行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();
});