Playframework 2.0 Play framework 2.0中的最大文件上载大小

Playframework 2.0 Play framework 2.0中的最大文件上载大小,playframework-2.0,Playframework 2.0,当我在play framework 2.0中上载大文件(大于1 MB)时,我会 “413请求实体太大”错误。 你能不能请任何人建议如何摆脱这个 谢谢 更新 我通过将其添加到application.conf解决了这个问题 #设置最大文件大小 parsers.MultipartFormData.maxLength=10240K请参见 或Java版本: 摘录: // Accept only 10KB of data. def save = Action(parse.text(maxLength = 1

当我在play framework 2.0中上载大文件(大于1 MB)时,我会

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

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

谢谢

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

#设置最大文件大小 parsers.MultipartFormData.maxLength=10240K

请参见

或Java版本:

摘录:

// Accept only 10KB of data.
def save = Action(parse.text(maxLength = 1024 * 10)) { request =>
  Ok("Got: " + text)
}

您可以在
application.conf
中使用
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 */
            ...
        }
    }
}

在我的例子中,我在一个AJAX请求中得到了错误(这是一个长文本)。对于此类请求,可以设置属性:

parsers.text.maxLength=1024K


有关播放文档的更多信息:

对于播放版本2.4.x:

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


我正在使用
AnyContent
解析器。由于配置不适合我,我不得不将
controller
code改为following

 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
}
}

嘿,谢谢你的帮助。我是一个爪哇人。我的问题是将上面的行转换为Java。无论如何,谢谢。”
parsers.text.maxLength
已被弃用,请改用
play.http.parser.maxMemoryBuffer
“(play 2.4)
parsers.MultipartFormData.maxLength=x
中的
application.conf
对play 2.2.x似乎不起作用。这似乎对大于2GB的值不起作用。我使用了4096M,上传了一个3.96GB的文件,但还是失败了。没有413错误,但当我试图调用
RequestBody body=request().body()时;MultipartFormData formBody=body.asMultipartFormData()
formBody为空。这让我相信上传大小有一些硬限制。我正在尝试上传4-6Gb大小的文件。使用EntityTooLarge比使用BadRequest更合适。