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 回答