当我在播放框架 2.0中上传大文件(大于 1 MB)时,我得到
“413 请求实体太大”错误。
你能请任何人建议如何摆脱这个吗?
谢谢,
更新 我已经通过将它添加到 application.conf 解决了这个问题
#设置最大文件大小解析器.MultipartFormData.maxLength=10240K
当我在播放框架 2.0中上传大文件(大于 1 MB)时,我得到
“413 请求实体太大”错误。
你能请任何人建议如何摆脱这个吗?
谢谢,
更新 我已经通过将它添加到 application.conf 解决了这个问题
#设置最大文件大小解析器.MultipartFormData.maxLength=10240K
请参阅http://www.playframework.com/documentation/2.0.x/ScalaBodyParsers
或 Java 版本:http ://www.playframework.com/documentation/2.0.x/JavaBodyParsers
提炼:
// Accept only 10KB of data.
def save = Action(parse.text(maxLength = 1024 * 10)) { request =>
Ok("Got: " + text)
}
您可以在application.conf
using中配置它parsers.text.maxLength
。
parse.multipartFormData
并且parse.temporaryFile
不要把maxLength
让你像这样增加或减少默认值作为论据parse.text(maxLength)
。
但您可以parse.maxLength(maxLength, wrappedBodyParser)
改用:
// accepts 10 MB file upload
def save = Action(parse.maxLength(10 * 1024 * 1024, parse.multipartFormData)) { request =>
request.body match {
case Left(MaxSizeExceeded(length)) => BadRequest("Your file is too large, we accept just " + length + " bytes!")
case Right(multipartForm) => {
/* Handle the POSTed form with files */
...
}
}
}
对于播放版本 2.4.x:
对于在磁盘上缓冲内容的解析器,例如原始解析器或 multipart/form-data,使用play.http.parser.maxDiskBuffer属性指定最大内容长度,默认为 10MB。multipart/form-data 解析器还为数据字段的聚合强制执行文本最大长度属性。
https://www.playframework.com/documentation/2.4.x/ScalaBodyParsers
就我而言,我收到了 AJAX 请求错误(这是一个长文本)。对于这样的请求,您可以设置属性:
parser.text.maxLength=1024K
有关播放文档的更多信息:https ://www.playframework.com/documentation/2.0/JavaBodyParsers
我正在使用AnyContent
解析器。controller
由于配置对我不起作用,我不得不更改代码以遵循
def newQuestion = silhouette.SecuredAction.async(parse.maxLength(1024 * 1024, parse.anyContent)(ActorMaterializer()(ActorSystem("MyApplication")))) {
implicit request => {
println("got request with body:" + request.body)
val anyBodyErrors: Either[MaxSizeExceeded, AnyContent] = request.body
anyBodyErrors match {
case Left(size) => {
Future {
EntityTooLarge(Json.toJson(JsonResultError(messagesApi("error.entityTooLarge")(langs.availables(0)))))
}
}
case Right(body) => {
//val body:AnyContent = request.body
val jsonBodyOption = body.asJson
}
}