Реактивный ServerHttpResponse как вернуть 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,

Почему это и где фотография?

Другие пользователи отметили ваш вопрос как низкое качество и необходимость улучшения. Я переформулировал / отформатировал ваш ввод, чтобы его было легче читать / понимать. Просмотрите мои изменения, чтобы убедиться, что они отражают ваши намерения. Но я думаю, что на ваш вопрос пока нет ответа. Ты должен ответить редактировать на ваш вопрос сейчас, чтобы добавить недостающие детали (см. минимальный воспроизводимый пример). Не стесняйтесь писать мне комментарий, если у вас есть дополнительные вопросы или отзывы для меня.

GhostCat 26.10.2018 09:35

Кажется, вы никогда ничего не возвращаете в своей функции.

T A 26.10.2018 10:08

@TA, так что я должен вернуть то, что?

Lce Man 26.10.2018 11:28
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
3
868
1

Ответы 1

Это будет работать нормально! Я уже использовал его в своем проекте:

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

Другие вопросы по теме