2

我在 Java 中使用 Play,但在处理文件上传时遇到问题。

我在这个页面上做了所有的事情,但是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());    
    }
}

我尝试了在 Internet 上找到的几种解决方案,但没有一个对我有帮助。

我该如何解决?

4

1 回答 1

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>
于 2013-01-05T17:01:02.120 回答