2017-08-22 9 views
1

現在、ssh2-sftp-clientを使用してFTPサーバからファイルをダウンロードしようとしています。ssh2-sftp-clientリクエストノードを取得します。

私は下のコードに示すようにファイルのリストを見ることができます、私の問題は、ファイルをダウンロードすることです。

下のコードからわかるように、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'); 
}); 

は、どのように私は、これはファイルの内容を保存するために得ることができますか?

ヘルプや正しい方向へのプッシュは非常に高く評価されます。

答えて

2

私は次のようにsftp.getを変更することで、私の問題を解決: -

sftp.get(root+"/"+name).then((stream) => { 
    stream.pipe(fs.createWriteStream(local+name)); 
}); 

私がこの問題を持っているかもしれない他の誰に役立ちます願っています。

関連する問題