Spring MVC:如何在@ResponseBody中返回图像?

我正在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());

}

使用@ResponseBody注册的org.springframework.http.converter.ByteArrayHttpMessageConverter转换器作为@Sid说对我不起作用:(。


@ResponseBody

@RequestMapping("/photo2")

public byte[] testphoto() throws IOException {

    InputStream in = servletContext.getResourceAsStream("/images/no_image.jpg");

    return IOUtils.toByteArray(in);

}


UYOU
浏览 1136回答 3
3回答

人到中年有点甜

如果您使用的是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);}

慕后森

除了注册a之外ByteArrayHttpMessageConverter,您可能还想使用a ResponseEntity代替@ResponseBody。以下代码对我有用:@RequestMapping("/photo2")public ResponseEntity<byte[]> testphoto() throws IOException {&nbsp; &nbsp; InputStream in = servletContext.getResourceAsStream("/images/no_image.jpg");&nbsp; &nbsp; final HttpHeaders headers = new HttpHeaders();&nbsp; &nbsp; headers.setContentType(MediaType.IMAGE_PNG);&nbsp; &nbsp; return new ResponseEntity<byte[]>(IOUtils.toByteArray(in), headers, HttpStatus.CREATED);}
打开App,查看更多内容
随时随地看视频慕课网APP