2017-11-06 20 views
0

Node.jsを使用してリモートサーバーからファイルを取得しています。私は、ファイルのパスをプルするたびに論文ファイルをダウンロードできるようにしたい。Node.js SFTPダウンロードファイル

接続し、ファイル

var Client = require('ssh2-sftp-client'); 
var sftp = new Client(); 

var remotePathToList = '/archiveFiles/file.wav'; 

sftp.connect({ 
    host: '*******', 
    port: '22', 
    username: '******', 
    password: '******' 
}).then(() => { 
    res.download(remotePathToList); 
}).catch((err) => { 
    console.log(err, 'catch error'); 

を引くしかし、私は「ENOENT:そのようなファイルやディレクトリはありません、STAT "を取得:私は試してみましたC:。 '/ archiveFiles/file.wavを'" しかし、私はしようとしていますリモートサーバーではない、私のローカルデスクトップから論文ファイルをダウンロードする。

+0

ホストが正しいホスト名かipかを確認してください。そうでない場合は、デフォルトでlocalhostに設定されています。 – Shivam

+0

はい、ディレクトリをリスト表示して接続をテストするようにしました。しかし、 'res.download'を使ってこれを行うのが正しいかどうかは分かりません。 –

+0

私はsftp.get(remoteFilePath、[useCompression]、[encoding]);ではないはずのドキュメントを見ました。[ここから](https://www.npmjs.com/package/ssh2-sftp-client #get) – Shivam

答えて

0

すると、ssh2-sftp-clientを使用しているライブラリのドキュメントを参照してください。ファイルと例hereを取得するためのget方法があります。

彼女をeはあなたのためにどのように見えるかの例です。

sftp.connect(config).then(() => { 
    sftp.get('/archiveFiles/file.wav').then((data) => { 
    var outFile = fs.createWriteStream('file.wav') 
    data.on('data',function(response) { 
     outFile.write(response); 
    }); 
    data.on('close', function() { 
     outFile.close(); 
    }); 
    }); 
}) 
+0

ありがとうございました!しかし、私はこの警告を受け取ります(ノード:1656)UnhandledPromiseRejectionWarning:未処理の約束拒否(拒絶ID:1):TypeError:sftp.get(...)。pipeは関数ではありません –

+0

@carlosE。 'get'が約束通りに解決するように見えるので、上のコードを更新しました。 – dzm

+0

ファイルがダウンロードされて再生しようとする何らかの理由で、「Windows Media Playerがファイルを再生できません。プレーヤーがファイルの種類をサポートしていないか、ファイルを圧縮するために使用されたコーデックをサポートしていない可能性があります。 "たとえそれが保存されていたときにファイルが再生可能であったとしても。 –