如何使用jax-rs上传多部分/表单文件?

时间:2010-04-14 11:43:38

标签: jax-rs resteasy

(特别是RESTeasy)

对于单个文件来说,有一个方法签名就好了:

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

可行?还是我在做梦?似乎并不那么简单。

1 个答案:

答案 0 :(得分:26)

关键是利用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
}