Nodejs:无法从 sftp 服务器下载文件

Nodejs: Not able to download file from sftp server

我正在尝试从 nodejs 中的 sftp 下载文件,我使用 springboot 创建了 sftp 我能够连接并使用 python/Winscp/ssh 命令执行 get() 和 put() 操作。

我可以连接到我的 SFTP 服务器,但它没有下载文件,它只是在我的目录中创建了 0 KB 大小的空文件。我不确定出了什么问题。如果我不在循环中 运行 或者我只有一个文件,它就可以工作。

我已经尝试了几乎所有关于堆栈溢出的答案,但对我没有任何作用。

 let Client = require('ssh2-sftp-client');
let sftp = new Client();
const path = require('path')
require('events').EventEmitter.defaultMaxListeners = 1000;

function DownloadFromSFTP() {
    sftp.connect({
        host: '127.0.0.1',
        port: '2222',
        username: 'test',
        password: 'password',
        keepaliveInterval: 2000,
        keepaliveCountMax: 20
    }).then(() => {
        return sftp.list(path.resolve('C:\Users\akash\Documents\workspace-spring-tool-suite-4-4.8.1.RELEASE\SFTPServer\data'));
    }).then((data) => {
        let len = data.length;

        // THIS WILL WORK IF I REMOVE WHILE LOOP AND DO FOR ONE FILE.
        while (len--) {
            var remotePath = 'C:\Users\akash\Documents\workspace-spring-tool-suite-4-4.8.1.RELEASE\SFTPServer\data\' + data[len].name;
            console.log(remotePath);
            var localPath = "./uploads/" + data[len].name;
            sftp.fastGet(remotePath, localPath, {
                concurrency: 640,
                Chunksize: 32768
            }, function (err) {
                if (err) throw err
                console.log("downloaded successfully")
            });
        }
    }).catch((err) => {
        console.log(err, 'catch error');
    }).finally(() => {
        sftp.end();
    });
}

DownloadFromSFTP();

没有找到解决方案。

丑陋的解决方案是从 SFTP 下载整个目录,而不是一个一个地下载文件。