2017-07-19 62 views
1

在我的应用程序中,我需要上传相当大的文件(最多4GB)。我使用file表单域来完成,并将文件保存到临时位置以供进一步处理。然而,当涉及到超出内容的大小限制的文件,我得到一个EntityStreamException:播放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 => 
    ... 
} 

没有什么似乎工作。有人可以告诉我我做错了什么吗?

Upd:潜伏在游戏/ akka代码和一些调试后,我可以看到任何阿卡有关的设置刚被完全忽略。我发现play.http.parser设置传播到上下文并且被使用,但是没有应用任何akka设置,并且maxContentLength保持设置为默认值8MB。但根据这个文件:https://www.playframework.com/documentation/2.6.x/SettingsAkkaHttp 他们应该被应用。不知道下一步该怎么做。任何帮助将非常感激。

回答