2012-04-12 15 views
0

私たちはPlay Framework 2.0を使用しています。 REST要求を処理します。私たちは、POSTリクエストにファイルを渡し、Contollerでファイルを処理できるようにしたいと考えています。Play FrameworkでPOSTリクエストにファイルを渡す

私は次のようになってしまった:

GET /customer/:id/photos controllers.PhotosController.addPhoto(id: Integer, page: String) 

私はコントローラーのコードではなく、運せずにファイルの内容を取得しようとしました。

私は次のようにPOSTリクエストを送信していました:

curl.exe -X GET localhost:9000/customer/23/photos?page=Sun.jpg 

任意のアイデアこのケースを処理する方法?

+0

私は間違ったURLを使用していることに気付きました。だから問題は、ファイルコンテンツをカールで送信する方法をシミュレートできますか? – Jakub

+0

コマンド* curl.exe -X GET *はPOSTを行っていません。http://superuser.com/questions/149329/what-is-the-curl-command-line-syntax-toを見てください。 -do-a-post-requestおよびhttp://paulstimesink.com/2005/06/29/http-post-with-curl/ –

+0

また、コントローラは* File *の代わりに* String *を受け取ります –

答えて

0
//add this line in you controller 

static play.data.Form<Model> modelForm = form(Model.class); 

public static Result addPostSave(){ 
    try{ 
     MultipartFormData body = request().body().asMultipartFormData(); 
     FilePart picture = body.getFile("picture"); 
     File pic = picture.getFile(); 
if(filledForm.hasErrors()){ 
       return ok(addPost.render(postForm)); 
      }else{    
       Post post = new Post(); 
       post.picture = pic; 
       post.save(); 
       return ok(index.render("The image is created")); 
      } 
    }catch(IOException e){ 
     return ok(e.to_string) 
    }  
} 
0

私はあなたのコントローラのようなものになるはずと信じて:

public static void addPhoto(Integer id, File page){} 

ルートを:

POST /customer/:id/photos controllers.PhotosController.addPhoto(id: Integer, page: File) 

そして、あなたのテスト要求は、次のようになります。(

curl.exe -F [email protected] localhost:9000/customer/23/photos 

試合で試合1.2.3)

あなたがそのようにそれを行うプレイ2.0では
0

コントローラ(単なる例):

public static Result addPhoto(Integer id){ 
    MultipartFormData body = request().body().asMultipartFormData(); 
    FilePart file = body.getFile("page"); 
    System.out.println(file.getFilename()); 
    System.out.println(file.getFile().getAbsoluteFile()); 
    return ok(); 
} 

ルート

POST /addphoto/:id controllers.PhotosController.addPhoto(id: java.lang.Integer) 

カールコマンド

curl --header "enctype -> multipart/form-data" -F [email protected]/path/to/file localhost:9000/addphoto/23 
関連する問題