2017-09-26 9 views
0

私はJavaでプレイコントローラを持っています。リクエストは15MBのサイズです。このリクエストは、APIGEEからストリーム方式で送信されます。私は、コントローラー内の生ボディパーサーを使用してデータをファイルに書き込みました。しかし、私はそれが一度にファイルに要求データ全体を書き込むと思います。つまり、リクエスト全体が1つの時点から1つの時点でメモリに格納されてからファイルに書き込まれる必要があります。プレイフレームワーク(JAVA)でストリームリクエストを受信する方法はありますか?Playframework Java - コントローラでチャンクされたHTTPリクエストを受け取る方法

答えて

2

生ボディパーサーは全身をメモリにバッファリングせず、本体をポイントまでバッファーします(play.http.parser.maxMemoryBufferを使用して構成され、デフォルトは100kbです)。それを超過すると、本体をファイルにフラッシュして起動します。それをファイルに書き出しますが、ファイルに書き込むデータの量には制限があります。これはplay.http.parser.maxDiskBufferで構成され、デフォルトは10MBです。あなたの15メガバイトのボディはおそらくその限界を超えているので、それに応じてplay.http.parser.maxDiskBufferを増やす必要があります。これはすべてthe documentationで説明されています。

が要求をストリーミングする方法については、あなたの実際の質問に答えるために、Javaでカスタムボディパーサを書くためのドキュメントはここにある:ほとんどのものを説明し

https://www.playframework.com/documentation/2.6.x/JavaBodyParsers#Writing-a-custom-body-parser

は、あなたが身体パーサが動作再生方法について知っておく必要があるとしたがって、ストリーミング・ボディ・パースを行う方法、この答えでそのドキュメンテーションを複製する際のポイントはありません。

関連する問題