簡體   English   中英

NullPointerException:null playframework 2.1.1文件上傳

[英]NullPointerException: null playframework 2.1.1 file upload

我只是玩游戲框架中的新手,我正嘗試使用playframework 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");

}  

}

並在View中的以下代碼是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>

}

請給我一些建議,我錯了。

提前致謝

您沒有發布routes文件,但是由於錯誤,我猜您正在將請求映射到GET而不是POST

原因是在body調用方法時會收到NullPointerException body是從request對象的上一行初始化的,將內容檢索為multipartFormData

您的表單片段正確地將表單聲明為multipart/form-data ,並按預期映射到控制器的方法。 這意味着您不應該獲取內容的唯一原因是該請求的正文為空,在這種情況下,該請求只能在GET請求中。

當然,可能還有一個更奇特的原因,但是我敢打賭這就是原因。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM