Rüd*_*ulz 4 java spring spring-mvc
为了BufferedImage从spring-mvc中搜索最少量的代码(在服务类中绘制)Controller,我想出了以下内容:
@GetMapping(value = "/image", produces = "image/png")
public StreamingResponseBody image() {
BufferedImage canvas = service.createImage();
return outputStream -> ImageIO.write(canvas, "png", outputStream);
}
Run Code Online (Sandbox Code Playgroud)
到目前为止,非常好 - 使用HTML中的图像通过<img src="/image">工作正常.
但是,spring根本不会发送任何Content-Type标题.与X-Content-Type-Options: nosniff响应中的服务一起,当直接打开图像URL时,这会导致浏览器窗口中的垃圾.
如何以最弹性友好的方式提供内容类型标题(即不HttpServletResponse直接使用)?
ESa*_*ala 10
您可以将其包装在a中ResponseEntity<...>,这样您就可以通过响应构建器轻松修改响应中的所有参数:
@GetMapping(value = "/image", produces = "image/png")
public ResponseEntity<StreamingResponseBody> image() {
BufferedImage canvas = service.createImage();
StreamingResponseBody stream = outputStream ->
ImageIO.write(canvas, "png", outputStream);
return ResponseEntity.ok()
.contentType(MediaType.IMAGE_PNG)
.body(stream);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5229 次 |
| 最近记录: |