sftp 経由でファイル ストアに接続する Node Express サーバーを作成しています。ssh2-sftp-clientパッケージを使用しています。
ファイルを取得するためにget
、次のシグネチャを持つ関数があります。
get(srcPath, dst, options)
引数はdst
、文字列またはa writable stream, which will be used as the destination for a stream pipe
.
この記事で説明されているように、サーバーでファイル オブジェクトを作成するのを避け、代わりにファイルをクライアントに転送してメモリ消費を節約したいと考えています。私は次のコードでこれを達成しようとしました:
const get = (writeStream) => {
sftp.connect(config).then(() => {
return sftp.get('path/to/file.zip', writeStream)
});
};
app.get('/thefile', (req, res) => {
get(res); // pass the res writable stream to sftp.get
});
ただし、これにより、未処理の約束の拒否が原因でノード サーバーがクラッシュします。私が試みていることは可能ですか?クライアントに送信する前に、まずサーバー マシンにファイルを保存する必要がありますか? 問題の sftp パッケージのドキュメント/例を確認しましたが、探している例が見つかりません。