我正在尝试使用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))
}
此操作成功获取了数组中的文件并正确命名,但每个文件实际上每次都下载了相同的文件。 谢谢
答案 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)