2016-12-19 3 views
0

DBからイメージを返すための単純なSpringコントローラエンドポイントを作成していますので、使用しているコードは生のバイト配列です。イメージの戻り値のメソッドのコンテンツタイプヘッダーに文字セットを追加するSpringコントローラ

@RequestMapping(value = "/getphoto", method = RequestMethod.GET , produces = MediaType.IMAGE_GIF_VALUE) 
    public ResponseEntity<Resource> getphoto(@RequestParam(@RequestParam("uuid") UUID uuid) { 

    byte[] image = service.getPhoto(uuid); 

    HttpHeaders headers = new HttpHeaders(); 
    headers.setContentType(MediaType.IMAGE_JPEG); 
    headers.setContentLength(image.length); 

    return new ResponseEntity<Resource>(new ByteArrayResource(image), headers, HttpStatus.OK); 
} 

問題は、イメージのバイト数が増えていますが、コンテンツタイプは常にimage/jpeg;charset=UTF-8のような文字セットで追加されます。非テキストMIMEタイプの文字セットを削除するにはどうすればよいですか?私は文字列メソッドheaders.set("Content-Type", "image/jpeg");を使用してコンテンツタイプを追加しようとしましたが、それでも喜びはありません!助言がありますか?私は、この文字セットが、クロムの郵便配達人とFirefoxのrestclinetのようなイメージを表示するために、多くのテストクライアントを妨げていると考えています。

編集 私は多くの方法で文字セットを削除するために管理しているが、それはrestclinetに私が取得しています、これは私がこのエンドポイントをやっている方法で、唯一の問題ではありませんになります。

ができませんプレビュー画像

あなたの応答は画像ですが、MIMEタイプを に変更する必要があります。 MIMEタイプを "text/xml; charset = x-user-defined"に変更してこのリクエストを再送信しますか?私はそう続けてください、画像はrestclientで見ることができ、クロムで郵便配達で

enter image description hereをクリックすると、画像がまだも表示されません

。このような

+0

イメージバイト配列を直接レスポンスに書き込みます。response.setHeader( "Cache-Control"、 "no-store"); response.setHeader( "Pragma"、 "no-cache"); response.setDateHeader( "Expires"、0);response.setContentType( "image/jpeg"); OutputStream os = response.getOutputStream(); os.write(image); os.flush(); os.close(); – Henry

答えて

0

使用@Henryが示唆したように、

@RequestMapping(value = "/getphoto", method = RequestMethod.GET , produces = MediaType.IMAGE_JPEG_VALUE) 
public ResponseEntity<?> getphoto(@RequestParam(@RequestParam("uuid") UUID uuid) { 
    byte[] image = service.getPhoto(uuid); 
    ResponseEntity<?> responseEntity = null; 
    if(image == null) 
     responseEntity = ResponseEntity.notFound().build(); 
    else 
     responseEntity = ResponseEntity.ok(image); 
    return responseEntity; 
} 

は、これは直接応答にバイト配列を配置します。 image []がnullの場合は404で応答します。

関連する問題