我正在尝试从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下载整个目录,而不是逐个下载文件。