1

私はプレイフレームワークの新人で、プレイフレームワーク2.1.1でアップロードファイルをコーディングしようとしていましたが、この例外が発生しています [NullPointerException]: null
私は私のコントローラーで次のコードを持っており、このリンクを使用しています

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>
    
}

私が間違っているところを教えてください。

前もって感謝します

4

1 に答える 1

2

あなたはファイルを投稿しませんでしたが、エラーによって、リクエストをではなく にroutesマッピングしていると思います。GETPOST

その理由はNullPointerException、 でメソッドを呼び出すときにが得られるからですbodybodyオブジェクトの前の行で初期化されrequest、内容が として取得されmultipartFormDataます。

フォーム スニペットは、フォームを適切に宣言し、multipart/form-data期待どおりにコントローラーのメソッドにマップします。これは、コンテンツを取得してはいけない唯一の理由は、リクエストの本文が空であることであり、このシナリオではGETリクエストにのみ含まれることを意味します。

もちろん、もっと風変わりな理由があるかもしれませんが、それが理由だと思います。

于 2013-07-04T09:21:19.570 に答える