0

我们正在使用 Play Framework 2.0。服务 REST 请求。我们希望能够将文件传递给 POST 请求,并能够在我们的 Contoller 中处理它。

我最终得到以下结果:

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

我试图在控制器代码中获取文件的内容,但没有运气。

我通过以下方式发送 POST 请求:

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

任何想法如何处理这种情况?

4

3 回答 3

0

在 Play 2.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 page=@/path/to/file localhost:9000/addphoto/23
于 2012-10-10T20:19:58.763 回答
0

我相信你的控制器应该看起来像:

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

路线:

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

您的测试请求应该类似于:

curl.exe -F page=@Sun.jpg localhost:9000/customer/23/photos

(在游戏 1.2.3 中测试)

于 2012-04-12T15:29:26.247 回答
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)
    }    
}
于 2012-04-12T12:28:36.473 回答