2015-11-03 11 views
6

Ho bisogno di restituire l'immagine nel mio controller Spring. provo risposta in questo Spring MVC: How to return image in @ResponseBody? ma non funzionaCome restituire l'immagine in Spring REST al browser

il mio codice è come questo

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

ma quando accedo nel browser, esso non mostra nulla (proprio nessuna icona foto). Ma se leggo l'array di byte dell'immagine, non è vuoto. Mi manca qualcosa nel mio codice?

+0

Aprire la console di rete del browser e verificare ciò che la risposta contiene. Pubblica qui. –

+0

oh, sembra che il tipo sia ancora 'documento'. Ma l'ho impostato nelle intestazioni, quindi dovrebbe restituire l'immagine. Forse l'ho impostato nel modo sbagliato? –

+0

Cosa attualmente è necessario impostare correttamente l'intestazione del tipo di contenuto. Verifica che il metodo del gestore sia correttamente richiamato. Si noti che '@ ResponseBody' non è necessario poiché il tipo di ritorno è' ResponseEntity'. Rimuoverla. –

risposta

1

Il tuo codice sembra ok. Assicurati di aver aggiunto ByteArrayHttpMessageConverter all'elenco di convertitori di messaggi http della tua applicazione.

Java Config:

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