如何使用 ssh2-sftp-client fastGet 下载多个文件?
How to download multiple files with ssh2-sftp-client 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 做错了一些事情,但不知道从哪里开始。
您的代码中似乎存在多个问题:
loop
through 文件应该在第一个 then
块中执行。
sftp.fastGet
returns 一个承诺,因此它是一个 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();
});
如何使用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
through 文件应该在第一个then
块中执行。sftp.fastGet
returns 一个承诺,因此它是一个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();
});