我只是玩游戏框架中的新东西,我试图用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>
}
请提出一些建议,说明我错了。
先谢谢
答案 0 :(得分:2)
您没有发布routes
文件,但是由于错误,我猜您将请求映射到GET
而不是POST
。
原因是您在NullPointerException
中调用方法时获得body
。 body
在request
对象的上一行中初始化,检索内容为multipartFormData
。
您的表单片段正确地将表单声明为multipart/form-data
并按预期映射到控制器的方法。这意味着您不应该获取内容的唯一原因是请求具有空主体,并且在此方案中只有GET
请求。
当然,可能有一个更奇特的原因,但我打赌那就是那个。