2015-11-03 1 views
6

Spring Controllerで画像を返す必要があります。 私はこのSpring MVC: How to return image in @ResponseBody?で答えを試みるが、それはSpring RESTで画像をブラウザに戻す方法

私のコードを働いていないが、この

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

のようですが、私はブラウザでアクセスした場合、それは何も(単に画像無しのアイコン)が表示されません。しかし、イメージのバイト配列を読み込んだ場合、空ではありません。 私のコードで何かを忘れていませんか?

+0

は、ブラウザのネットワークコンソールを開き、応答に何が含まれているか確認してください。ここに投稿してください。 –

+0

ああ、タイプはまだ 'ドキュメント'のようです。しかし、私はヘッダーに設定したので、イメージを返す必要があります。たぶん私は間違った方法でそれを設定? –

+0

現在お持ちのコンテンツタイプのヘッダーを正しく設定する必要があります。ハンドラメソッドが適切に呼び出されていることを確認してください。戻り値の型は 'ResponseEntity'なので、' @ ResponseBody'は不要です。それを除く。 –

答えて

1

コードは正常です。アプリケーションのhttpメッセージコンバータのリストにByteArrayHttpMessageConverterを追加したことを確認してください。

JavaのConfigが:

@Override 
public void configureMessageConverters(List<HttpMessageConverter<?>> converters) { 
    ByteArrayHttpMessageConverter byteConverter = new ByteArrayHttpMessageConverter(); 
    converters.add(byteConverter); 
    super.configureMessageConverters(converters); 
} 
関連する問題