Моя задача (или лучше, должна быть) проста: получить содержимое каталога в SFTP из приложения Node, а затем загрузить все файлы там и, наконец, удалить их удаленно ,SFTP-модули в узле для загрузки и удаления файлов
Теперь я проверил разные модули. Очень чистый, на мой взгляд, ssh2-sftp-клиент. Я могу использовать его как это:
let Client = require('ssh2-sftp-client');
let sftp = new Client();
sftp.connect({
host: myhost,
port: '22',
username: myusername,
password: mypassword
}).then(() => {
return sftp.list('/path/to/my/files');
}).then((data) => {
for(var i = 0 ; i < data.length; i++) {
sftp.get('/path/to/my/files/'+data[i].name);
}
}).catch((err) => {
console.log(err, 'catch error');
});
Я могу перечислить все файлы и увидеть результат JSon в консоли, но .get команда, кажется, ничего не делать, и я понятия не имею, что это неправильно. Из документации (https://www.npmjs.com/package/ssh2-sftp-client) вы можете получать файлы просто так, как я делаю. Но:
1) он не работает 2) как я могу отладить, что происходит? 3) если у меня нет возможности выбрать локальный каталог, будут ли эти файлы, скорее всего, загружены там, где js запущен узлом, не так ли?
Итак, как я могу получить файлы, фактически загруженные и удаленные удаленно, если они были успешно загружены с помощью этого модуля (или других, если таковые имеются)?
Спасибо, Фабио
'sftp.get ('/ path/to/my/files /' + data [i] .name) 'возвращает поток. Вы должны обрабатывать этот поток и сохранять его как файл на вашем локальном компьютере. –
Спасибо, не могли бы вы обратиться ко мне с командой sftp, которую я мог бы использовать для завершения этой задачи, то есть для обработки потока? Даже если модуль не реализует его, я мог бы использовать методы базового модуля ssh2. –
Хорошо ... Я могу вам помочь. Вы хотите сохранить поток в виде файла? –