gpt4 book ai didi

java - Play Framework 2.0 中的文件大小限制

转载 作者:行者123 更新时间:2023-11-30 11:19:11 25 4
gpt4 key购买 nike

我正在尝试检查在 Play 应用程序 (2.0.3) 中上传的文件的大小。

我尝试了 Scala 和 Java Controller ,但每次都有同样的奇怪行为......我设法检测到文件太大,但是当我尝试返回响应时,请求永远挂起并且用户不知道请求无效。

在 Java 中:

@BodyParser.Of(value = BodyParser.MultipartFormData.class, maxLength = 10 * 1024 * 1024)
pulic static Result upload() {
if(request().body().isMaxSizeExceeded()) {
return badRequest("Too much data!"); // this is not returned
} else {
ok("Got body: " + request().body().asText());
}
}

在斯卡拉:

def upload = Action(parse.maxLength(10 * 1024 * 1024, parse.multipartFormData)) { request =>
request.body match {
case Left(MaxSizeExceeded(length)) => {
Logger.error("MaxSizeExceeded")
BadRequest("Your file is too large, we accept just " + length + " bytes!")
}
case Right(multipartForm) => {
// Do stuff to handle the file
}
}
}

HTML 模板:

@(httpPath: java.lang.String) @main(httpPath) {

@helper.form(action = routes.Application.upload(), 'enctype -> "multipart/form-data", 'class -> "form-horizontal", 'id -> "form") {

<div id="well" class="well">

<h1>Upload</h1>
<div id="formGroup" class="control-group">
<label class="control-label" for="file">Select file : </label>
<div class="controls">
<input id="file" name="file" type="file" style="display: none" />

<div class="input-append">
<input id="txtFile" type="text" class="required" readonly="true"/>
<span class="btn" onclick="$('#file').click();">Browse</span>
</div>

<script type="text/javascript">
$('#file').change(function() {
$('#txtFile').val($(this).val());
});
</script>
</div>
</div>

<button id="submit" type="submit" class="btn btn-primary" >Upload</button>
</div>
}
}

日志:

2014-04-30 16:46:44,791 - [[trace]] - play - New I/O  worker #4 - Serving this request with: Action(parser=BodyParser(maxLength=1048576, wrapping=BodyParser(multipartFormData))) -
2014-04-30 16:46:44,996 - [[trace]] - play - play-akka.actor.promises-dispatcher-60 - Invoking action with request: POST /upload -
2014-04-30 16:46:44,998 - [[error]] - application - play-akka.actor.actions-dispatcher-10 - MaxSizeExceeded java -
2014-04-30 16:46:44,999 - [[trace]] - play - play-akka.actor.actions-dispatcher-10 - Sending simple result: SimpleResult(400, Map(Content-Type -> text/plain; charset=utf-8, Set-Cookie -> )) -

我看到其他开发人员也面临同样的问题(例如 https://groups.google.com/forum/#!topic/play-framework/wuXnoXN5GZ0 )。这是 2.0.x 中的已知问题吗?我做错了什么吗?

谢谢

最佳答案

将Play版本升级到2.2.1,问题消失。

我尝试使用最新发布的 2.0.x 版本 (2.0.8),错误仍然存​​在。

显然,它已在 2.1.x 中修复。

关于java - Play Framework 2.0 中的文件大小限制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23365670/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com