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());    
    }
}

私はインターネットで見つけたいくつかの解決策を試しましたが、どれも私を助けませんでした。

どうすれば修正できますか?

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 に答える