File upload 播放2.0.4文件上传。NullPointerException:null

File upload 播放2.0.4文件上传。NullPointerException:null,file-upload,playframework-2.0,File Upload,Playframework 2.0,我在Java中使用Play,在处理文件上传时遇到问题 我在第页上做了一切,但当我提交表单时,我得到了NullPointerException 这是我的表格: @form(action = routes.Application.upload, 'enctype -> "multipart/form-data") { <input type="file" name="picture"> <p> <input type="submit">

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

我在第页上做了一切,但当我提交表单时,我得到了
NullPointerException

这是我的表格:

@form(action = routes.Application.upload, 'enctype -> "multipart/form-data") {
<input type="file" name="picture">
    <p>
       <input type="submit">
   </p>
}
这是我的控制器:

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());    
    }
}
我尝试过在互联网上找到的几种解决方案,但没有一种对我有帮助


如何修复它?

请记住,此处的
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>



奇怪,代码是正确的,而且您没有错误(我逐行检查)。你在开发模式下工作吗?可能是您在生产模式下启动了应用程序,但它没有;t反映代码更改,尝试使用ctrl+c在控制台中停止应用程序,并再次使用
play run
运行它,然后再次检查表单。还向我们展示其他导入(可能是您无意中使用了某些Scala版本…)如果可能的话,请以当前的状态发布部分完整的代码其余的导入:
import java.io.File
导入播放数据。*
导入play.mvc.*关于代码的其余部分,它基本上只是简单的应用程序,从PlayFramework主页教程中列出,视图中有不相关的更改。我需要在我的其他应用程序上传文件,但我只是在这一个测试它。我使用了
body.asFormUrlEncoded()
,我注意到
input type=“file”
中的值不在这个映射中,但是
input type=“text”
中的值是。“提交”按钮似乎无法向前传递图片。我使用的是Play 2.0.4。这也是正确的,文件可以在
asMultipartFormData()
,tbh中找到,我不知道怎么回事,如果你不能发布整个项目-尝试创建新的应用程序并只放置你的上传代码,它可能不会出现问题,然后你可以检查自己,如果当前代码与其他代码之间存在一些差异。谢谢。它在每一个应用程序中都能工作,尽管一开始我试着测试文件上传:)NVM,总之它工作:)Pozdrawia学生PWR:)
<form action="/upload" method="POST" enctype="multipart/form-data">

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

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

</form>