springboot 的web项目中返回图片文件流报错 No converter for [class java.util.LinkedHashMap] with preset Content-Type image/jpg ]
时间: 2024-01-31 09:08:31 浏览: 299
Spring Boot中,如果你想返回图片文件流,需要使用ResponseEntity<byte[]>来包装你的图片数据。同时,你需要设置正确的Content-Type头信息,以便浏览器能够正确地解析图片。下面是一个示例代码:
```java
@GetMapping("/image")
public ResponseEntity<byte[]> getImage() throws IOException {
InputStream in = getClass()
.getResourceAsStream("/static/image.jpg");
byte[] imageBytes = IOUtils.toByteArray(in);
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.IMAGE_JPEG);
return new ResponseEntity<>(imageBytes, headers, HttpStatus.OK);
}
```
在这个示例中,我们使用了IOUtils.toByteArray()方法将图片文件流转换为字节数组,然后使用ResponseEntity<byte[]>来包装字节数组。我们还设置了正确的Content-Type头信息,以便浏览器能够正确地解析图片。
相关问题
springboot 返回图片文件流报错 No converter for [class java.util.LinkedHashMap] with preset Content-Type image/jpg ]
报错是因为SpringBoot无法找到合适的转换器将返回的数据转换为指定的Content-Type。在这种情况下,SpringBoot默认使用Jackson库将Java对象转换为JSON格式的数据,但是在这里,返回的是图片文件流,因此需要使用其他转换器。
解决方法是在Controller中使用ResponseEntity<byte[]>作为返回类型,并设置Content-Type为image/jpeg。具体代码如下:
```java
@GetMapping("/image")
public ResponseEntity<byte[]> getImage() throws IOException {
InputStream imageStream = new FileInputStream(new File("path/to/image.jpg"));
byte[] imageBytes = IOUtils.toByteArray(imageStream);
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.IMAGE_JPEG);
return new ResponseEntity<byte[]>(imageBytes, headers, HttpStatus.OK);
}
```
其中,IOUtils是Apache Commons IO库中的一个工具类,用于将InputStream转换为byte数组。
阅读全文