簡體   English   中英

反應式 ServerHttpResponse 如何返回 jpg?

[英]reactive ServerHttpResponse how to return jpg?

我的控制器代碼:

@RestController
public class CaptchaService {

   @GetMapping(value="/verify")
   public void captchaService(ServerHttpResponse response, WebSession webSession) throws IOException {
       BufferedImage image = new BufferedImage(61, 20, BufferedImage.TYPE_INT_RGB);
       Graphics g = image.getGraphics();
       Random r = new Random();
       g.setColor(new Color(r.nextInt(255), r.nextInt(255), r.nextInt(255)));
       g.fillRect(0, 0, 61, 20);
       String code = getNumber();
       webSession.getAttributes().put("captcha", code);
       g.setFont(new Font(Font.SANS_SERIF, Font.BOLD, 20));
       g.setColor(new Color(r.nextInt(255), r.nextInt(255), r.nextInt(255)));
       g.drawString(code, 5, 18);
       response.getHeaders().setContentType(MediaType.IMAGE_JPEG);
       OutputStream os = response.bufferFactory().allocateBuffer().asOutputStream();
       ImageIO.write(image, "jpeg", os);
}

}

我收到

localhost:8080/verify", return content-length: 0 Content-Type: image/jpeg,

為什么會這樣,圖片在哪里?

這將正常工作! 我已經在我的項目中使用過它:

 @GetMapping("/world")
    public Mono<Void> world(ServerWebExchange exchange) throws Exception {
        ServerHttpResponse response = exchange.getResponse();
        response.setStatusCode(HttpStatus.OK);
        response.getHeaders().setContentType(MediaType.IMAGE_JPEG);
        DataBufferFactory dataBufferFactory = new DefaultDataBufferFactory();
        fileToByte(new File("F:\\1.jpg"));
        DataBuffer dataBuffer = dataBufferFactory.wrap(bytes);
        return response.writeWith(Flux.just(dataBuffer));
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM