我正在使用java spring mvc应用程序。我的控制器中有一个负责生成图像的方法:
@RequestMapping(value = "/view", method = RequestMethod.GET, produces = "image/jpg")
public void viewImage(HttpServletResponse response, HttpServletRequest request) throws Exception
这很好用。但我现在有一个问题。产生的图像可以具有3种格式jpg,jpeg和png。因此,produces
中需要多个@RequestMapping
属性。有没有办法做到这一点?例如,类似这样的内容:produces = "image/jpg, image/jpeg, image/png"
答案 0 :(得分:3)
你可以在产品中使用多种mime类型,例如
produces={"image/jpg, image/jpeg, image/png"}
现在为了让框架知道要解析哪个mimeType,您需要为请求添加Path或Parameter或Accept头(所谓的PPA策略)。阅读更多content negotiation
答案 1 :(得分:2)
在您的情况下,produces
字段无关紧要,因为该方法返回void
。似乎是将图像写入输出流。您可以使用所需的图像格式设置响应标头。
的 E.g:强>
response.setContentType("image/jpeg");
答案 2 :(得分:2)
从较新版本的Spring
开始,如此实施效果更好:
produces = {MediaType.IMAGE_JPEG_VALUE, MediaType.IMAGE_PNG_VALUE, MediaType.IMAGE_GIF_VALUE}
答案 3 :(得分:0)
我找到了。从this link开始,produces
属性可以包含字符串数组。所以我可以拥有这个:
producess = {"image/jpg", "image/jpeg", "image/png"}