我在Play 2.0中使用Scala,每当大数据(超过100KB)发布到特定端点时,我都会收到413错误。它使用anyContent解析器,并且为这个特定的API使用任何其他解析器是不合理的。(Play 2.0)为AnyContent设置最大POST大小
堆栈溢出还有其他问题,显示如何增加文本或JSON请求的最大POST大小。我如何为anyContent做到这一点,或者只是增加项目范围的限制?
我在Play 2.0中使用Scala,每当大数据(超过100KB)发布到特定端点时,我都会收到413错误。它使用anyContent解析器,并且为这个特定的API使用任何其他解析器是不合理的。(Play 2.0)为AnyContent设置最大POST大小
堆栈溢出还有其他问题,显示如何增加文本或JSON请求的最大POST大小。我如何为anyContent做到这一点,或者只是增加项目范围的限制?
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")
}
}
注意使用原始的解析器,即一个最多需要作为一个参数:
行动(parse.raw(10000 * 1024 ))
有关更多详细信息,请参阅parse.raw方法。
为什么是1024而不是1000? – 2015-06-30 13:08:41
千字节通常定义为2^10或1024个字节而不是1000个 – thatsmydoing 2015-07-08 17:26:07
谢谢,这有助于!另外,Play 2.4警告:'parsers.text.maxLength已被弃用,请使用play.http.parser.maxMemoryBuffer来代替' – Jonik 2015-11-20 16:28:05