ssh2-sftp-client一遍又一遍地获取相同的文件

时间:2018-08-21 23:38:14

标签: node.js ssh2-sftp

我正在尝试使用node和ssh2-sftp-client从Sftp服务器获取一堆2k文件。 ftp.connect({ host: '...', port: '...', username: '...', password: '...', readyTimeout: ... }).then(() => { return ftp.list('/Stmts/') }) .then((data) => { let filesToTransfer = []; //only get files I dont already have for (let i = data.length-10; i < data.length; i++) { if (!blobs.includes(data[i].name)) { filesToTransfer.push(data[i].name) } } // Get the files in the filesToTransfer Array for (const file of filesToTransfer){ ftp.fastGet('/Stmts/' + file, path.join(__dirname, '../Files/' + file)) }

此操作成功获取了数组中的文件并正确命名,但每个文件实际上每次都下载了相同的文件。 谢谢

1 个答案:

答案 0 :(得分:0)

通过以下方法解决了这个问题:

.then((data)=>{
 var x = 0;
        var loop = function (arr) {
            let file = arr[x].name;
            let remoteFileNameWithPath = '/Stmts/' + file;
            let localFilePath = path.join(__dirname, '../Files/' + file)
            ftp.fastGet(remoteFileNameWithPath, localFilePath).then((a) => {                    
                x++
                if (x < arr.length) {
                    loop(arr)
                } 
            })
        }
 })
loop(data)