我正在从数据库获取图像数据(作为byte[])。如何在@ResponseBody中返回此图像?

编辑

我没有使用@ResponseBody作为方法参数使用HttpServletResponse做到了:

@RequestMapping("/photo1")
public void photo(HttpServletResponse response) throws IOException {
    response.setContentType("image/jpeg");
    InputStream in = servletContext.getResourceAsStream("/images/no_image.jpg");
    IOUtils.copy(in, response.getOutputStream());
}


将@cc与已注册的@ResponseBody转换器一起使用@cc作为@Sid对我不起作用:(。

@ResponseBody
@RequestMapping("/photo2")
public byte[] testphoto() throws IOException {
    InputStream in = servletContext.getResourceAsStream("/images/no_image.jpg");
    return IOUtils.toByteArray(in);
}

最佳答案

如果您使用的是Spring 3.1或更高版本,则可以在@RequestMapping批注中指定“产生”。下面的示例对我来说开箱即用。如果启用了Web MVC(@EnableWebMvc),则不需要寄存器转换器或其他任何东西。

@ResponseBody
@RequestMapping(value = "/photo2", method = RequestMethod.GET, produces = MediaType.IMAGE_JPEG_VALUE)
public byte[] testphoto() throws IOException {
    InputStream in = servletContext.getResourceAsStream("/images/no_image.jpg");
    return IOUtils.toByteArray(in);
}

关于spring-mvc - Spring MVC:如何在@ResponseBody中返回图像?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48862677/

10-16 13:53