26

(具体的にはRESTeasy)

(単一のファイルの場合)次のようなメソッドシグネチャがあると便利です。

public void upload(@FormParam("name") ..., @FormParam("file") file: InputStream)
... 

実行可能ですか?または私は夢を見ていますか?それほど単純ではないようです。

4

1 に答える 1

30

重要なのは、RESTEasyに付属している@MultipartFormアノテーションを活用することです。これにより、フォームのすべての部分を含むPOJOを定義し、簡単にバインドできます。

たとえば、次のPOJOを考えてみましょう。

public class FileUploadForm {
    private byte[] filedata;

    public FileUploadForm() {}

    public byte[] getFileData() {
        return filedata;
    }

    @FormParam("filedata")
    @PartType("application/octet-stream")
    public void setFileData(final byte[] filedata) {
        this.filedata = filedata;
    }
}

これで、必要なのは、次のようなエンティティでこのPOJOを使用することだけです。

@POST
@Path("/upload")
@Consumes("multipart/form-data")
public Response create(@MultipartForm FileUploadForm form) 
{
    // Do something with your filedata here
}
于 2010-07-19T11:51:27.690 に答える