Старайтесь сначала получать только файлы, которые находятся в ваших папках, без использования переменных, используя ваш путь в качестве строки для устранения ошибок.
var Client = require('ssh2-sftp-client');
let sftp = new Client
sftp.connect({
host: 'remote_server_iṕ',
port: 22,
username: 'username',
password: 'password'
}).then(() => {
return sftp.list('/');
}).then(async (files) => {
console.log(files);
len = files.length;
await files.forEach(x => {
let remoteFilePath = '/' + x.name;
sftp.get(remoteFilePath).then((stream) => {
let file = './ftp/' + x.name;
fs.writeFile(file, stream, (err) => {
if (err) console.log(err);
});
});
});
}).catch((err) => {
console.log(err, 'catch error');
});
Чтобы получить один файл:
var Client = require('ssh2-sftp-client');
let sftp = new Client
sftp.connect({
host: 'remote_server_iṕ',
port: 22,
username: 'username',
password: 'password'
}).then(() => {
let remoteFilePath = '/' + fileName;
sftp.get(remoteFilePath).then((stream) => {
let file = './ftp/' + x.name;
fs.writeFile(file, stream, (err) => {
if (err) console.log(err);
});
sftp.end();
});
}).catch((err) => {
console.log(err, 'catch error');
});
Используйте это, чтобы закрыть соединение ftp:
sftp.end();