Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Spring控制器:StreamingResponseBody的内容类型_Java_Spring_Spring Mvc - Fatal编程技术网

Java Spring控制器:StreamingResponseBody的内容类型

Java Spring控制器:StreamingResponseBody的内容类型,java,spring,spring-mvc,Java,Spring,Spring Mvc,为了从spring mvc控制器中搜索服务于BuffereImage(绘制在服务类中)的最少代码量,我提出了以下建议: @GetMapping(value = "/image", produces = "image/png") public StreamingResponseBody image() { BufferedImage canvas = service.createImage(); return outputStream -> ImageIO.write(can

为了从spring mvc
控制器
中搜索服务于
BuffereImage
(绘制在服务类中)的最少代码量,我提出了以下建议:

@GetMapping(value = "/image", produces = "image/png")
public StreamingResponseBody image() {
    BufferedImage canvas = service.createImage();
    return outputStream -> ImageIO.write(canvas, "png", outputStream);
}
到目前为止,还不错-通过
在HTML中使用图像效果很好

但是,spring根本不发送任何
内容类型
标题。再加上在响应中提供
X-Content-Type-Options:nosniff
,这将导致直接打开图像URL时浏览器窗口中出现垃圾


如何以最为spring友好的方式(即不直接使用
HttpServletResponse
)提供内容类型标题?

您可以将其包装在
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);
}
@GetMapping(value=“/image”,products=“image/png”)
公众反应形象(){
BuffereImage canvas=service.createImage();
StreamingResponseBody流=outputStream->
写入(画布,“png”,输出流);
返回ResponseEntity.ok()
.contentType(MediaType.IMAGE\u PNG)
.身体(溪流);
}

您不需要。。。。。。