2

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

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

@Produces("image/*")

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

@Produces("image/jpeg").

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

4

2 回答 2

5

根据 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 的答案。

于 2013-11-12T07:26:38.787 回答
4

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

请注意,拥有多个 @Produces 注释的目的是用于内容协商,其中用户代理表达想要的资源表示,而服务器则使用适当的数据变体(例如 JPEGPNG)来回答。

于 2013-11-12T07:38:20.203 回答