(Play 2.0)为AnyContent设置最大POST大小

问题描述 投票:15回答:2

我在Play 2.0中使用Scala,每当将大数据(超过100KB)发布到特定端点时,我就会收到413错误。它使用anyContent解析器,对这个特定的API使用任何其他解析器是不合理的。

Stack Overflow还有其他一些问题,说明如何增加文本或JSON请求的最大POST大小。我如何为anyContent执行此操作,或者仅在项目范围内增加限制?

scala playframework-2.0
2个回答
20
投票

TL; DR为你的parsers.text.maxLength = 512k添加application.conf或任何大小

更新:发现在official documentation

它实际上记录在API中,虽然它需要一些挖掘来实际找到它。

展开DEFAULT_MAX_TEXT_LENGTH表示可以通过在parsers.text.maxLength中设置application.conf来配置文本数据的最大大小。查看源本身,默认值为100Kb,因此这很可能是您需要设置的。

在一个有点相关的说明中,我们还有maxLength方法可用于任何BodyParser,这意味着对于非文本数据,除非您应用该方法,否则没有上限。实际上,我们可以将它应用于AnyContent解析器,如下所示:

def foo = Action(parse.maxLength(512 * 1024, parser = parse.anyContent)) { implicit req =>
    req.body match {
        case Left(_) => EntityTooLarge
        case Right(body) => Ok("This is totally not too large")
    }
}

0
投票

注意那些使用原始解析器的人,最大值作为参数:

动作(parse.raw(10000 * 1024))

有关更多详细信息,请参阅parse.raw方法。

© www.soinside.com 2019 - 2024. All rights reserved.