25

当我在播放框架 2.0中上传大文件(大于 1 MB)时,我得到

“413 请求实体太大”错误。

你能请任何人建议如何摆脱这个吗?

谢谢,

更新 我已经通过将它添加到 application.conf 解决了这个问题

#设置最大文件大小

解析器.MultipartFormData.maxLength=10240K

4

5 回答 5

18

请参阅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.confusing中配置它parsers.text.maxLength

于 2012-07-06T08:09:20.717 回答
17

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 */
            ...
        }
    }
}
于 2013-07-31T12:51:15.057 回答
11

对于播放版本 2.4.x:

对于在磁盘上缓冲内容的解析器,例如原始解析器或 multipart/form-data,使用play.http.parser.maxDiskBuffer属性指定最大内容长度,默认为 10MB。multipart/form-data 解析器还为数据字段的聚合强制执行文本最大长度属性。

https://www.playframework.com/documentation/2.4.x/ScalaBodyParsers

于 2015-11-12T10:33:27.243 回答
5

就我而言,我收到了 AJAX 请求错误(这是一个长文本)。对于这样的请求,您可以设置属性:

parser.text.maxLength=1024K

有关播放文档的更多信息:https ://www.playframework.com/documentation/2.0/JavaBodyParsers

于 2014-09-19T11:51:31.127 回答
0

我正在使用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
}
}
于 2019-08-20T07:23:41.567 回答