【发布时间】:2016-02-03 01:53:27
【问题描述】:
我需要在我的 Spring 控制器中返回图像。 我尝试在这个Spring MVC: How to return image in @ResponseBody? 中回答,但它不起作用
我的代码是这样的
@RequestMapping(value = "cabang/photo", method = RequestMethod.GET)
@ResponseBody
public ResponseEntity<byte[]> getPhoto() throws IOException {
File imgPath = new File("D:\\test.jpg");
byte[] image = Files.readAllBytes(imgPath.toPath());
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.IMAGE_JPEG);
headers.setContentLength(image.length);
return new ResponseEntity<>(image, headers, HttpStatus.OK);
}
但是当我在浏览器中访问它时,它什么也不显示(只是没有图片图标)。但是如果我读取图像字节数组,它不是空的。 我错过了代码中的任何内容吗?
【问题讨论】:
-
打开浏览器的网络控制台并检查响应包含的内容。在此处发布。
-
哦,看起来类型仍然是“文档”。但我将它设置在标题中,所以它应该返回图像。也许我设置错了?
-
您当前拥有的应该正确设置内容类型标头。检查您的处理程序方法是否被正确调用。请注意,
@ResponseBody是不必要的,因为您的返回类型是ResponseEntity。删除它。 -
hmm.. 在响应头中,内容类型已经是 image/jpeg,作为响应,它不是空的.. 像“/9j/4AAQSkZJRgABAQE...”,但我不知道为什么浏览器不显示它。我可以检查字节数组,所以我认为该方法被调用了
-
这个问题你解决了吗?
标签: spring image rest controller spring-rest