2017-07-19 41 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 他們應該被應用。不知道下一步該怎麼做。任何幫助將非常感激。

回答