如何使用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,但不知道具体从什么或从哪里开始。
发布于 2020-07-08 20:45:57
代码中似乎存在多个问题:
itself.
sftp.fastGet返回一个承诺,因此它是一个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();
});https://stackoverflow.com/questions/62802860
复制相似问题