Spring MVC Image响应内容类型设置text / html

时间:2017-05-30 12:01:34

标签: spring spring-mvc model-view-controller content-type

我有简单的控制器方法来返回像

这样的图像
    @RequestMapping(value = "{id}", method = RequestMethod.GET) 
public ResponseEntity<InputStreamResource> get(@PathVariable Long id, @RequestParam Map<String, String> params) {

    ResponseEntity<InputStreamResource> response = null;

     MyImage image = getImage(id);
     HttpHeaders respHeaders = new HttpHeaders();
     String contentType = image.getContentType();
     if (contentType != null) {
        respHeaders.setContentType(MediaType.valueOf(contentType));
      } 
      respHeaders.setContentLength(image.getLength());
      respHeaders.setContentDispositionFormData("attachment", image.getFilename());

      InputStreamResource isr = new InputStreamResource(fileInfo.getInputStream());
      response = new ResponseEntity<InputStreamResource>(isr, respHeaders, HttpStatus.OK);          

      return response;          
}

它的图像具有内容类型,它将被设置并且响应具有正确内容类型的正确标头,但如果未设置内容类型,则客户端响应具有内容类型text / html。

如果内容类型未知,我喜欢删除内容类型标题,但即使从标题地图中删除内容类型标题也无济于事。什么想法会有什么不对? Spring版本是3.2.14。

1 个答案:

答案 0 :(得分:1)

根据documentation,您可以写出类似的内容:

 @RequestMapping(value = "{id}", method = RequestMethod.GET,produces = "image/*")

@RequestMapping(value = "{id}", method = RequestMethod.GET,produces = {MediaType.IMAGE_JPEG_VALUE,MediaType.IMAGE_PNG_VALUE})

未指定ResposeEntity中的内容类型