如何下载node.js中所有带有ssh2-sftp-client的文件夹和文件



所以正如标题所说,我试图下载存储在sftp服务器上的所有文件夹和文件,所以我使用ssh2-sftp-client包来完成这一点,但目前我只是设法下载单个文件在控制器中指定的文件夹中,这里是代码

checkCtrl.checkSftp = async (req, res) => {
console.log(req.body);
console.log('wtf men');
const {url,username,password,port} = req.body
const host = url;

sftp.connect({
host,
port,
username,
password,
keepaliveInterval :2000,
keepaliveCountMax :20
}).then(() => {
return sftp.list('/');
}).then(async (data) => {
console.log(`Remote working directory is ${data}`);
console.log(data);
len = data.length;
// x is one element of the array
await data.forEach(x => {
let remoteFilePath = '/' + x.name;
sftp.get(remoteFilePath).then((stream) => {
// save to local folder ftp
let file = './ftp/' + x.name;
fs.writeFile(file, stream, (err) => {
if (err) console.log(err);
});
});
});
// res.status(200).send(`Success`)
// return sftp.end();
}).catch(err => {
res.status(400).send('error')
console.log(err, 'catch error');
});
};

我只想下载指定文件夹下的所有文件

如果有任何建议做同样的FTP服务器将不胜感激

我可以使用下面的示例下载给定文件夹中的所有.csv文件:

https://github.com/theophilusx/ssh2-sftp-client/blob/master/example/downloadDir.js

我只想要.csv文件,所以我添加了:

const filter = '(\.csv$)'
let rslt = await client.downloadDir(src, dst, filter);

相关内容

  • 没有找到相关文章

最新更新