Java - JAX RS Jersey2 MultiPart 415响应

时间:2018-04-18 12:47:35

标签: java rest jax-rs multipartform-data

我正在开发RESTful服务(在 TomEE 上)并需要使用multipart/form-data来上传文件以及传递额外的JSON。使用Jersey 2,我已经包含了所有必需的依赖项(包括jersey-media-multipart甚至mimepull

我写了一个简单的资源方法:

@POST
@Path("/upload")
@Consumes(MediaType.MULTIPART_FORM_DATA)
public Response upload(@FormDataParam("file") InputStream uploadInputStream,
                        @FormDataParam("file") FormDataContentDisposition contentDisposition, 
                        @FormDataParam("details") UploadDetails uploadDetails) {
    // processing
}

邮递员拨打电话会导致415 Unsupported Media Type,而堆栈跟踪就是这样:

  

严重:没有为课程找到邮件正文阅读器   org.glassfish.jersey.media.multipart.FormDataContentDisposition,   内容类型:   多部分/格式数据;边界= -------------------------- 152775525417017934208524

     

2018年4月18日下午3:33:55   org.apache.cxf.jaxrs.impl.WebApplicationExceptionMapper toResponse

     

警告:javax.ws.rs.WebApplicationException:HTTP 415不支持   媒体类型
  在org.apache.cxf.jaxrs.utils.JAXRSUtils.readFromMessageBody(JAXRSUtils.java:1346)

找不到类FormDataContentDisposition的邮件正文阅读器。使用FormDataMultiPart等其他变量时,会出现相同的异常。

注意事项

我在主类中注册了MultipartFeature(扩展了Application):

@Override
public Map<String, Object> getProperties() {
    Map<String, Object> props = new HashMap<>();
    props.put("jersey.config.server.provider.classnames", "org.glassfish.jersey.media.multipart.MultiPartFeature");
    return props;
}

我也看过SO中关于这个问题的所有帖子,似乎没有任何帮助。

我无法找到它是如何发生的。也许我在这里看到了一些东西?

修改

标记的副本在我的案例中没有帮助。

0 个答案:

没有答案