我有简单的控制器方法来返回像
这样的图像 @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。
答案 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中的内容类型