Jersey REST服务返回jpeg和png图像

时间:2013-11-12 07:09:48

标签: java image rest jersey

我正在尝试使用一个可以返回jpeg类型或png类型的图像的Jersey REST服务,原因是因为该服务只能访问并返回二进制数据,并且无法判断它是否为jpeg图像或png图像。

如果我使用以下声明,浏览器将显示二进制数据。

@Produces("image/*")

但是,如果我对jpeg图像使用以下内容,则会显示正确的图像。

@Produces("image/jpeg").

我想知道如何使用单个声明来使浏览器识别出正确的图像类型(jpeg或png)?

2 个答案:

答案 0 :(得分:4)

根据JAX-RS规范,允许列出多种媒体类型:

@Produces({"image/png", "image/jpeg", "image/gif"})

请参阅:https://jax-rs-spec.java.net/nonav/2.0/apidocs/javax/ws/rs/Produces.html

<强>更新 有关详细信息,请参阅@ forty-two的答案。

答案 1 :(得分:4)

如果服务不知道类型,则它不能比image/*更具体。但是,您可以检查数据的前几个字节到detect类型并相应地添加Content-Type标头。

请注意,具有多个@Produces注释的目的是用于内容协商,其中用户代理表达所需资源表示,并且服务器使用适当的数据变体来回答,例如, JPEG PNG。