Мой код контроллера:
@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,
Почему это и где фотография?
Кажется, вы никогда ничего не возвращаете в своей функции.
@TA, так что я должен вернуть то, что?
Это будет работать нормально! Я уже использовал его в своем проекте:
@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));
}
Другие пользователи отметили ваш вопрос как низкое качество и необходимость улучшения. Я переформулировал / отформатировал ваш ввод, чтобы его было легче читать / понимать. Просмотрите мои изменения, чтобы убедиться, что они отражают ваши намерения. Но я думаю, что на ваш вопрос пока нет ответа. Ты должен ответить редактировать на ваш вопрос сейчас, чтобы добавить недостающие детали (см. минимальный воспроизводимый пример). Не стесняйтесь писать мне комментарий, если у вас есть дополнительные вопросы или отзывы для меня.