NullPointerException:null playframework 2.1.1文件上传

时间:2013-07-04 06:26:29

标签: java playframework-2.1

我只是玩游戏框架中的新东西,我试图用playframework 2.1.1编写上传文件,但是我得到了这个异常[NullPointerException]:null
我在My Controller中使用this link

后面的代码
package controllers;

//import com.ning.http.client.FilePart;
import play.mvc.Http.MultipartFormData;
import play.mvc.Http.MultipartFormData.FilePart;
import play.*;
import play.mvc.*;
import play.data.*;
import static play.data.Form.*;
import java.io.File;
import models.*;
import views.html.*;

public class Application extends Controller {

    public static Result index() {
        return ok(index.render("My App"));
    }
public static Result upload(){
    MultipartFormData body=request().body().asMultipartFormData();
    MultipartFormData.FilePart picture=body.getFile("picture");//Error is here 

    if(picture!=null){
        //String fileName=picture.getFileName(); and if I uncomment this line it also show an error for 'value not find 'getFileName' ' is there any import is needed?
        String contentType=picture.getContentType();
        File file=picture.getFile();
        return ok("File Uploaded");
    }
    else 
    {
        flash("error", "Missing File");
        return redirect(routes.Application.index());
    }
//File file = request().body().asRaw().asFile();
//return ok("File uploaded");

}  

}

并在视图中查看app / views / upload.scala.html

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

    <input type="file" name="picture">

    <p>
        <input type="submit">
    </p>

}

请提出一些建议,说明我错了。

先谢谢

1 个答案:

答案 0 :(得分:2)

您没有发布routes文件,但是由于错误,我猜您将请求映射到GET而不是POST

原因是您在NullPointerException中调用方法时获得bodybodyrequest对象的上一行中初始化,检索内容为multipartFormData

您的表单片段正确地将表单声明为multipart/form-data并按预期映射到控制器的方法。这意味着您不应该获取内容的唯一原因是请求具有空主体,并且在此方案中只有GET请求。

当然,可能有一个更奇特的原因,但我打赌那就是那个。