【发布时间】:2020-07-03 01:49:10
【问题描述】:
我在我的电子应用程序中使用此代码连接到我需要收集一些数据的 sftp 服务器。列出 /out 文件夹中的文件没有问题,但无法获取带有“定义权限”错误的 sftp 文件。理想情况下,我希望能够 get() 文件并直接在函数中访问文本数据,而无需存储到文件中。
let Client = require('ssh2-sftp-client');
let sftp = new Client();
var root = '/out';
var today = new Date();
var mon = ((today.getMonth()+1) < 10)? "0" + (today.getMonth()+1) : (today.getMonth()+1);
var date = (today.getDate() < 10)? "0" + today.getDate() : today.getDate();
var fileDate = mon + date;
sftp.connect({
host: '<server-address>',
port: 2222,
username: 'XXXXXXXX',
password: 'xxxxxxxx',
privateKey: fs.readFileSync(path.join(__dirname, '../rsa/<file-name-here>.pem'))
})
.then(() => {
return sftp.list(root, 'SN5M' + fileDate);
})
.then((fileInfo) => {
if (fileInfo) {
var filePath = root + '/' + fileInfo[fileInfo.length - 1].name;
return sftp.get(filePath).then((file) => {
console.log(file);
event.returnValue = file;
sftp.end();
})
.catch((err) => {
console.log('File get error', err);
event.returnValue = err;
sftp.end();
});
}
})
.catch((err) => {
console.log('File info error', err);
event.returnValue = err;
sftp.end();
});
【问题讨论】:
-
你遇到了什么错误?
-
我应该提一下!,我收到“错误:sftp.get: Permission denied at formatError”
-
你的代码执行是否进入了'if (fileInfo) {' 块?同时打印并检查 filePath 值。
-
是的,进入if语句,文件路径按预期出来
-
检查您是否有权读取该文件