ssh2 文件服务器,使用Node.js和SSH2从SFTP服务器读取文件

在尝试使用JSFTP通过FTP从开发服务器下载文件时遇到问题,尽管文件大小在readdir中显示正确。使用SFTP进行读取时,代码能够成功连接并打开流,但在处理数据流和错误时,可能遇到未知错误。代码片段展示了如何设置SSH2连接,创建SFTP读取流,并监听数据、错误和关闭事件。
摘要由CSDN通过智能技术生成

当我在文件上使用readdir时,文件的大小是正确的。

使用FTP(JSFTP)对我的开发FTP服务器使用上面相同的技术工作得很好。

醇>

任何建议表示赞赏!

这是我的代码:

var Client = require('ssh2').Client;

var m_ssh2Credentials = {

host: config.ftpHostName,

port: config.ftpPort,

username: config.ftpUser,

password: config.ftpPassword,

readyTimeout: 20000,

algorithms: { cipher: ["3des-cbc", "aes256-cbc", "aes192-cbc","aes128-cbc"]}

};

...

var conn = new Client();

var dataLength = 0;

conn.on('ready', function() {

conn.sftp(function(err, sftp) {

if (err) {

writeToErrorLog("downloadFile(): Failed to open SFTP connection.");

} else {

writeToLog("downloadFile(): Opened SFTP connection.");

}

var streamErr = "";

var dataLength = 0;

var stream = sftp.createReadStream(config.ftpPath + "/" + m_fileName)

stream.on('data', function(d){

data.push(d);

dataLength += d.length;

});

.on('error', function(e){

streamErr = e;

})

.on('close', function(){

if(streamErr) {

writeToErrorLog("downloadFile(): Error retrieving the file: " + streamErr);

} else {

writeToLog("downloadFile(): No error using read stream.");

m_fileBuffer = Buffer.concat(data, dataLength);

writeToLog("Data length: " + dataLength);

writeToLog("downloadFile(): File saved to buffer.");

}

conn.end();

});

})

})

.on('error', function(err) {

writeToErrorLog("downloadFile(): Error connecting: " + err);

}).connect(m_ssh2Credentials);

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值