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 次 |
最近记录: |