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