Java 在Play Framework 2中进行多文件上载的示例

Java 在Play Framework 2中进行多文件上载的示例,java,file-upload,nullpointerexception,playframework-2.0,Java,File Upload,Nullpointerexception,Playframework 2.0,请帮助我查找PlayFramework2(Java)中多文件上传的示例 我尝试以下代码: public static Result saveImages() { File dir = new File(Play.application().path() + File.separator + "public" + File.separator + "uploads"); if (!dir.exists()) { dir.mkdirs(); } Fil

请帮助我查找PlayFramework2(Java)中多文件上传的示例

我尝试以下代码:

public static Result saveImages() {
    File dir = new File(Play.application().path() + File.separator + "public" + File.separator + "uploads");
    if (!dir.exists()) {
        dir.mkdirs();
    }
    FileOutputStream moveTo = null;
    String filename = request().headers().get("x-file-name").toString();
    Logger.info("Name of the file " + filename);
    return ok();
}
我认为:

    <form action="save_image" method="POST" enctype="multipart/form-data">
        <input type="file" name="image" />
        <input type="submit" value="save">
    </form>
堆栈跟踪:

[error] application - 

! @6dkiaiban - Internal server error, for (POST) [/save_image] ->

 play.api.Application$$anon$1: Execution exception[[NullPointerException: null]]
at play.api.Application$class.handleError(Application.scala:289) ~[play_2.10.jar:2.1.0]
at play.api.DefaultApplication.handleError(Application.scala:383) [play_2.10.jar:2.1.0]
at play.core.server.netty.PlayDefaultUpstreamHandler$$anon$2$$anonfun$handle$1.apply(PlayDefaultUpstreamHandler.scala:132) [play_2.10.jar:2.1.0]
at play.core.server.netty.PlayDefaultUpstreamHandler$$anon$2$$anonfun$handle$1.apply(PlayDefaultUpstreamHandler.scala:128) [play_2.10.jar:2.1.0]
at play.api.libs.concurrent.PlayPromise$$anonfun$extend1$1.apply(Promise.scala:113) [play_2.10.jar:2.1.0]
at play.api.libs.concurrent.PlayPromise$$anonfun$extend1$1.apply(Promise.scala:113) [play_2.10.jar:2.1.0]
 java.lang.NullPointerException: null
at controllers.Realty.saveImages(Realty.java:76) ~[na:na]
at Routes$$anonfun$routes$1$$anonfun$applyOrElse$9$$anonfun$apply$9.apply(routes_routing.scala:253) ~[na:na]
at Routes$$anonfun$routes$1$$anonfun$applyOrElse$9$$anonfun$apply$9.apply(routes_routing.scala:253) ~[na:na]
at play.core.Router$HandlerInvoker$$anon$6$$anon$2.invocation(Router.scala:141) ~[play_2.10.jar:2.1.0]
at play.core.Router$Routes$$anon$1.invocation(Router.scala:322) ~[play_2.10.jar:2.1.0]
at play.core.j.JavaAction$$anon$1.call(JavaAction.scala:31) ~[play_2.10.jar:2.1.0]

如果有人正在寻找从POST请求中提取文件的方法,以下方法对我很有用:

(输入的属性名称设置为“jsonFile”)


编辑:编辑以供参考,因为我刚刚注意到这个问题太老了

将堆栈跟踪复制/粘贴为一个文件。这也会有助于发布一篇文章,以便我们能够匹配行号。我还为此主题添加了一个堆栈跟踪和我的视图表单“SSCCE”是否有一些部分您不理解?
[error] application - 

! @6dkiaiban - Internal server error, for (POST) [/save_image] ->

 play.api.Application$$anon$1: Execution exception[[NullPointerException: null]]
at play.api.Application$class.handleError(Application.scala:289) ~[play_2.10.jar:2.1.0]
at play.api.DefaultApplication.handleError(Application.scala:383) [play_2.10.jar:2.1.0]
at play.core.server.netty.PlayDefaultUpstreamHandler$$anon$2$$anonfun$handle$1.apply(PlayDefaultUpstreamHandler.scala:132) [play_2.10.jar:2.1.0]
at play.core.server.netty.PlayDefaultUpstreamHandler$$anon$2$$anonfun$handle$1.apply(PlayDefaultUpstreamHandler.scala:128) [play_2.10.jar:2.1.0]
at play.api.libs.concurrent.PlayPromise$$anonfun$extend1$1.apply(Promise.scala:113) [play_2.10.jar:2.1.0]
at play.api.libs.concurrent.PlayPromise$$anonfun$extend1$1.apply(Promise.scala:113) [play_2.10.jar:2.1.0]
 java.lang.NullPointerException: null
at controllers.Realty.saveImages(Realty.java:76) ~[na:na]
at Routes$$anonfun$routes$1$$anonfun$applyOrElse$9$$anonfun$apply$9.apply(routes_routing.scala:253) ~[na:na]
at Routes$$anonfun$routes$1$$anonfun$applyOrElse$9$$anonfun$apply$9.apply(routes_routing.scala:253) ~[na:na]
at play.core.Router$HandlerInvoker$$anon$6$$anon$2.invocation(Router.scala:141) ~[play_2.10.jar:2.1.0]
at play.core.Router$Routes$$anon$1.invocation(Router.scala:322) ~[play_2.10.jar:2.1.0]
at play.core.j.JavaAction$$anon$1.call(JavaAction.scala:31) ~[play_2.10.jar:2.1.0]
Http.MultipartFormData body = request().body().asMultipartFormData();
Http.MultipartFormData.FilePart resourceFile = body.getFile("jsonFile");

if( resourceFile != null )
{
    File uploadedFile = resourceFile.getFile();
}