2017-07-19 15 views
1

私のアプリケーションでは、非常に大きなファイル(最大4GB)をアップロードする必要があります。私はfileフォームフィールドを使用してそれを行い、さらなる処理のために一時的な場所にファイルを保存します。それは私がEntityStreamExceptionを取得し、コンテンツサイズの制限を超えるファイルに来るときしかし:Play 2.6 EntityStreamSizeException例外

play.api.http.HttpErrorHandlerExceptions$$anon$1: Execution exception[[EntityStreamSizeException: EntityStreamSizeException: actual entity size (Some(781434380)) exceeded content length limit (8388608 bytes)! You can configure this by setting `akka.http.[server|client].parsing.max-content-length` or calling `HttpEntity.withSizeLimit` before materializing the dataBytes stream.]] 

を私は両方アッカを設定しようとしました* [クライアント|サーバー]私のapplication.confで限界以下のように。。:

akka.http.server.parsing.max-content-length = 4096MB 
akka.http.client.parsing.max-content-length = 4096MB 

でも、同じメッセージでクラッシュします。 私もドキュメントを追跡しようとしましたが、設定したプレイの設定:

play.http.parser.maxMemoryBuffer=512k 
play.http.parser.maxDiskBuffer=4096MB 

それがここで提案されるよう:私が試した最後のものは、明示的に私のポストでの設定を無効にすることでしたhttps://www.playframework.com/documentation/2.6.x/ScalaBodyParsers

ハンドラー:

def doCreate = checkToken { 
    Action(parse.maxLength(400000000, parse.multipartFormData)) { implicit request => 
    ... 
} 

何も動作していないようです。誰かが私が間違っていることを教えてもらえますか?

更新:再生/ akkaコードといくつかのデバッグに潜んでいると、私はakka関連の設定が完全​​に無視されていることがわかります。私は、play.http.parser設定がコンテキストに伝播され、使用されているのを見ますが、akka設定は適用されず、maxContentLengthはデフォルト値の8MBに設定されたままです。しかし、この文書によれば、https://www.playframework.com/documentation/2.6.x/SettingsAkkaHttp が適用されます。次に何をすべきかわからない。どんな助けでも本当に感謝します。

答えて

2

私は、関連するプル要求を見つけた:https://github.com/playframework/playframework/pull/7548

だから、私は理解して、この設定が機能しないはずです。例外のメッセージは誤解を招きます。

UPDhttps://blog.playframework.com/play-2-6-1-released/ここに変更点があります。このマージリクエストがあります。 Play 2.6.1にアップデートすると、akka max-content-limitがinfiniteに設定されているので、設定カウントだけを再生できることがわかります。

関連する問題