我正在使用Play in Java,我遇到处理文件上传的问题。
我在this页面上做了所有内容,但在提交表单时我得到NullPointerException
。
这是我的表格:
@form(action = routes.Application.upload, 'enctype -> "multipart/form-data") {
<input type="file" name="picture">
<p>
<input type="submit">
</p>
}
路线:
POST /upload controllers.Application.upload()
这是我的控制器:
import play.mvc.Http.MultipartFormData;
import play.mvc.Http.MultipartFormData.FilePart;
public static Result upload() {
MultipartFormData body = request().body().asMultipartFormData();
FilePart picture = body.getFile("picture"); //here i got NullPointerException
if (picture != null) {
String fileName = picture.getFilename();
String contentType = picture.getContentType();
File file = picture.getFile();
return ok("File uploaded");
} else {
flash("error", "Missing file");
return redirect(routes.Application.index());
}
}
我尝试过在互联网上找到的几种解决方案,但它们都没有帮助我。
我该如何解决?
答案 0 :(得分:1)
请注意,此地点的NullExceptions
适用于body
,不适用于picture
唯一可能的原因是你发送的HTML表单没有enctype="multipart/form-data"
(也许你没有在浏览器中刷新表单并且仍然试图发送普通表单?)
确保(在您的浏览器中),您填写表单的页面具有此表单声明,然后重试。
<form action="/upload" method="POST" enctype="multipart/form-data">
<input type="file" name="picture">
<p>
<input type="submit">
</p>
</form>