如何将Image作为ResponseEntity <byte []>返回并使用Thyme leaf </byte []>显示它

时间:2014-01-24 11:29:51

标签: java spring-mvc thymeleaf

我正在使用百里香叶作为我的项目之一,我在生成QRCode时遇到问题并在浏览器中显示相同的问题我使用的是spring mvc框架。

  1. 我会将产品ID发送到API层,该层必须为该ID创建QR码。这不应该保存在任何地方并作为响应返回byte []
  2. 使用百里香叶框架必须在浏览器中显示图像
  3. 请帮助。

    此致 莫汉

1 个答案:

答案 0 :(得分:5)

只需向控制器发送HTTP请求即可。

在Thymeleaf模板中,将图像源设置为Spring MVC控制器的url:

<img th:src="@{/controller/qr/${id}}" />

在控制器中提供一个方法,将图像返回为ResponseEntity

@RequestMapping (value="/qr/{id}", method = RequestMethod.GET)
public ResponseEntity<byte[]> getQRImage(@PathVariable final String id) {
    byte[] bytes = ...; // Generate the image based on the id

    // Set headers
    final HttpHeaders headers = new HttpHeaders();
    headers.setContentType(MediaType.IMAGE_PNG);

    return new ResponseEntity<byte[]> (bytes, headers, HttpStatus.CREATED);
}

在这个问题中可以找到更多答案:Spring MVC: How to return image in @ResponseBody?