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