2017-07-19 4 views
1

In meiner Anwendung muss ich ziemlich große Dateien hochladen (bis zu 4 GB). Ich mache es mit file Formularfeld und speichern Sie die Datei zur temporären Speicherort für die weitere Verarbeitung. . Allerdings, wenn es um Dateien kommt, die den Inhalt-Größenlimit überschreiten ich eine EntityStreamException.Abspielen 2.6 EntityStreamSizeException Ausnahme

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.]] 

Ich habe versucht, beide akka einstellen * [client | server] Grenzen in meinem application.conf wie folgt:

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

aber es stürzt immer noch mit der gleichen Botschaft. Ich habe auch versucht, in der Dokumentation zu folgen und stelle Spieleinstellungen:

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

wie es hier vorgeschlagen: https://www.playframework.com/documentation/2.6.x/ScalaBodyParsers

Das letzte, was ich versucht habe, war ausdrücklich die Einstellung in meinem Beitrag außer Kraft setzen Handler:

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

Nichts scheint zu arbeiten. Kann mir jemand sagen, was ich falsch mache?

Upd: Nach dem Lauern im Spiel/Akka-Code und einige Debuggen kann ich sehen, dass alle akka-bezogenen Einstellungen einfach vollständig ignoriert werden. Ich sehe, dass die Einstellung play.http.parser in den Kontext übernommen wird und verwendet wird, jedoch wird keine akka-Einstellung angewendet und maxContentLength bleibt auf den Standardwert von 8 MB gesetzt. Aber nach diesem Dokument: https://www.playframework.com/documentation/2.6.x/SettingsAkkaHttp sollten sie angewendet werden. Nicht sicher, was als nächstes zu tun ist. Jede Hilfe wird wirklich geschätzt.

Antwort

2

Ich habe eine ähnliche Pull-Anforderung gefunden: So https://github.com/playframework/playframework/pull/7548

, wie ich sie verstehe, sollte diese Einstellung nicht. Die Nachricht in der Ausnahme ist irreführend.

UPD: https://blog.playframework.com/play-2-6-1-released/ Hier in Änderungshinweise ist diese Zusammenführungsanforderung vorhanden. Nach dem Update auf Play 2.6.1 kann ich sehen, dass akka max-content-limit auf infinite gesetzt ist, so dass nur Einstellungen abgespielt werden.