2015-11-03 13 views
6

İlkbahar denetleyicimde görüntüyü döndürmem gerekiyor. Bu Spring MVC: How to return image in @ResponseBody? yanıtını çalışıyorum amaBahar REST'de görüntüyü tarayıcıya nasıl geri döndürür

benim kod bu

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

gibidir çalışmıyor ama tarayıcıda eriştiklerinde, bir şey (sadece hayır resim simgesi) göstermez. Ama görüntü bayt dizisini okursam boş değil. Kodumda bir şey özlüyor muyum?

+0

tarayıcınızın ağ konsolunu açın ve tepki ne içerdiğini kontrol edin. Bunu buraya gönderin. –

+0

oh, tip hala 'belge' gibi görünüyor. Ama ben bunu başlıklara yerleştirdim, bu yüzden görüntüyü döndürmeli. Belki yanlış yola koymuştum? –

+0

Şu anda sahip olduğunuz içerik türü üstbilgisini doğru şekilde ayarlamalısınız. İşleyici yönteminizin uygun şekilde çağrıldığından emin olun. Dönüş türünüzün ResponseEntity olduğundan, @ ResponseBody'nin gereksiz olduğunu unutmayın. Onu kaldır. –

cevap

1

Kodunuz iyi görünüyor. Uygulamanızın http ileti dönüştürücüler listesine ByteArrayHttpMessageConverter eklediğinizden emin olun.

Java Yapılandırma:

@Override 
public void configureMessageConverters(List<HttpMessageConverter<?>> converters) { 
    ByteArrayHttpMessageConverter byteConverter = new ByteArrayHttpMessageConverter(); 
    converters.add(byteConverter); 
    super.configureMessageConverters(converters); 
} 
İlgili konular