2015-11-03 17 views
6

Tôi cần trả lại hình ảnh trong bộ điều khiển Spring của mình. tôi cố gắng trả lời trong Spring MVC: How to return image in @ResponseBody? này nhưng nó không làm việcCách trả lại hình ảnh trong Spring REST về trình duyệt

mã của tôi là như thế này

@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); 
} 

nhưng khi tôi truy cập vào nó trong trình duyệt, nó không hiển thị bất cứ điều gì (chỉ không có biểu tượng hình ảnh). Nhưng nếu tôi đọc mảng byte hình ảnh, nó không rỗng. Tôi có bỏ lỡ bất cứ điều gì trong mã của mình không?

+0

Mở giao diện điều khiển mạng của trình duyệt của bạn và kiểm tra những phản ứng chứa. Đăng ở đây. –

+0

oh, có vẻ như loại vẫn là 'tài liệu'. Nhưng tôi đặt nó trong tiêu đề, vì vậy nó sẽ trả về hình ảnh. Có lẽ tôi đã đặt sai đường? –

+0

Những gì bạn hiện có nên đặt tiêu đề kiểu nội dung đúng cách. Kiểm tra xem phương thức xử lý của bạn có được gọi đúng cách không. Lưu ý rằng '@ ResponseBody' là không cần thiết vì kiểu trả về của bạn là' ResponseEntity'. Gỡ bỏ nó. –

Trả lời

1

Mã của bạn có vẻ ổn. Đảm bảo bạn đã thêm ByteArrayHttpMessageConverter vào danh sách các trình biến đổi tin nhắn http của ứng dụng của bạn.

Java Config:

@Override 
public void configureMessageConverters(List<HttpMessageConverter<?>> converters) { 
    ByteArrayHttpMessageConverter byteConverter = new ByteArrayHttpMessageConverter(); 
    converters.add(byteConverter); 
    super.configureMessageConverters(converters); 
} 
Các vấn đề liên quan