HTTPリクエストで応答ストリームでファイルの一部を送信するにはどうすればよいですか?ストリームを使用して巨大なコンテンツの範囲を送信する
巨大なファイルの任意のContent-Range
を送信したいと思います。
fs.createReadStream('hugeFile.bin').pipe(response)
を読んでいるストリームの一部を除外するときにイベントを使用することはできません。私は偽の書き込み可能なストリームを作成することができます。これはデータの一部を省略します(> /dev/null
など)が、chunk
のサイズは送信する最初の部分の倍数ではありません。
この問題を解決するにはどうすればよいですか?
私が 'response.statusCode = 216;'を実行すると 'response.setHeader( 'Content-Range'、 'bytes' + start + ' - ' +(end-1)+ '/' + stat.size) ; '、ストリームを介してファイルの内容を送信するにはどうすればよいですか?あなたが書いたコード行の後に 'response.end();'を呼びますか? – Orient
代わりに 'fs.createReadStream( 'hugeFile.bin'、{start:firstByte、end:lastByte})'オブジェクトの '' end''イベントハンドラで 'response.end();'を実行する必要がありますか? – Orient
ソースストリームが終了すると、response.endが自動的に呼び出されます。それはうまくいくはずです。 –