用于检索Multipart的Jax-Rs参数

时间:2015-12-02 21:46:16

标签: image jersey jax-rs retrofit

处理图像(文件)发布请求和注释的多部分改造字符串和RequestBody需要哪些参数?

JAX-RS:

@POST
@Path("/user/image")
@Consumes(MediaType.MULTIPART_FORM_DATA)
public Response addUserImage(?, ?) {}

改造2.0:

@Multipart
@POST("user/image")
Call<User> addUserImage(@Part("user") String userId, @Part("image") RequestBody image);

1 个答案:

答案 0 :(得分:1)

对于文件,您可以使用FileInputStreambyte[]。对于纯文本,只需使用String。您还需要使用@FormDataParam("<value>")注释参数,其值为零件的名称。

@POST
@Path("/user/image")
@Consumes(MediaType.MULTIPART_FORM_DATA)
public Response addUserImage(@FormDataParam("image") InputStream image,
                             @FormDataParam("image") FormDataContentDisposition imageDetail,
                             @FormDataParam("user") String user) {   
}

您需要确保拥有多部分支持依赖项。不确定您使用的是哪个泽西岛版本,但这里适用于

泽西岛2.x

<dependency>
    <groupId>org.glassfish.jersey.media</groupId>
    <artifactId>jersey-media-multipart</artifactId>
    <version>${jersey2.version}</version>
</dependency>

Jersey 1.x

<dependency>
    <groupId>com.sun.jersey.contribs</groupId>
    <artifactId>jersey-multipart</artifactId>
    <version>${jersey1.version}</version>
</dependency>

使用Jersey 1.x,它应该可以在没有任何进一步配置的情况下解决问题。对于2.x,您需要注册MultiPartFeature。如需帮助,请参阅this post