Node.js 如何使用ssh2 sftp客户端fastGet下载多个文件?
如何使用fastGet下载多个txt文件?我的代码如下:Node.js 如何使用ssh2 sftp客户端fastGet下载多个文件?,node.js,ssh2-sftp-client,Node.js,Ssh2 Sftp Client,如何使用fastGet下载多个txt文件?我的代码如下: const Client = require('ssh2-sftp-client'); const sftp = new Client(); sftp.connect(configs) .then(() => { return sftp.list('.'); }) .then(files => { files.forEach(file => {
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时犯了一些错误,但不知道从何处开始。您的代码中似乎存在多个问题:
循环应该在第一个块中执行,然后在块本身中执行
sftp.fastGet
返回一个承诺,因此它是一个异步
操作,在forEach
循环中执行异步
操作不是一个好主意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();
});