我当前正在尝试使用ssh2-sftp-client从FTP服务器下载文件。
我可以看到文件列表,如下面的代码所示,我的问题是下载文件时。
从下面的代码中可以看到,我正在尝试使用sftp.get获取文件和节点文件系统的内容来创建文件。
当文件保存时,它并不保存服务器上的文件内容,只是保存对象对象
var Client = require('../../node_modules/ssh2-sftp-client');
var sftp = new Client();
var root = '/files';
var fs = require('fs');
sftp.connect({
host: '192.168.0.1',
port: '22',
username: 'user',
password: 'password'
}).then(() => {
return sftp.list(root);
}).then((data) => {
for( var i = 0, len = data.length; i < len; i++) {
console.log(data[i].name);
var name = data[i].name;
sftp.get(root+'/'+name).then((file) => {
console.log(file);
fs.writeFile('downloads/'+name, file, function(err) {
if(err) {
return console.log(err);
}
console.log("The file was saved!");
});
}) }
}).catch((err) => {
console.log(err, 'catch error');
});怎样才能让它保存文件的内容?
任何帮助或在正确方向上的推动都将是非常感谢的。
发布于 2017-08-22 18:06:06
我通过将sftp.get更改为以下内容解决了我的问题:
sftp.get(root+"/"+name).then((stream) => {
stream.pipe(fs.createWriteStream(local+name));
});我希望这对其他可能有这个问题的人有所帮助。
https://stackoverflow.com/questions/45813289
复制相似问题