如何在不使用Multipart的情况下构建使用Jersey消耗图像的服务?

时间:2015-07-02 10:01:32

标签: java google-app-engine jersey jersey-2.0

我试图制作一个消耗图像的服务(二进制数据)。

使用此代码:

@POST
@Path("/test")
@Consumes("image/jpg")
@Produces(MediaType.APPLICATION_JSON)
@RolesAllowed({ Constants.SECURITY_ROLE_ADMIN })
public Response postRestaurantPicture(InputStream is)
{
    System.out.println("test");
    return Response.ok("it works").build();
}

产生此错误:

<html><head>
<meta http-equiv="content-type" content="text/html;charset=utf-8">
<title>415 Unsupported Media Type</title>
</head>
<body text=#000000 bgcolor=#ffffff>
<h1>Error: Unsupported Media Type</h1>
</body></html>

提示是我无法像MediaType.APPLICATION_JSON那样找到类似MediaType.IMAGE_JPG的常量。

  1. 我应该忘记直接使用image / jpg或image / png吗?
  2. 我应该使用multipart / form-data吗?
  3. 我应该使用application / octet-stream并将图像内容类型传递给另一个头参数吗?

1 个答案:

答案 0 :(得分:0)

我终于使用了这个完美运行的代码:

@POST
@Path("/{entityId}/pictures/{pictureId}")
@Consumes({ "image/jpg", "image/png" })
@Produces(MediaType.APPLICATION_JSON)
@RolesAllowed({ MyConstants.SECURITY_ROLE_ADMIN })
public Response postRestaurantPicture(@PathParam("entityId") String entityId,
        @PathParam("pictureId") Integer pictureId, byte[] imageBytes)
{
/// ...
}