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で見ることができ、クロムで郵便配達で
。このような
イメージバイト配列を直接レスポンスに書き込みます。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