В Jetty 9.4.21.v20190926 я запускаю собственный сервлет (WAR-файл), который может генерировать изображения, подобные этому:
по следующему коду:
@Override
protected void doGet(HttpServletRequest httpReq, HttpServletResponse httpResp) throws ServletException, IOException {
BufferedImage image = new BufferedImage(512, 512, BufferedImage.TYPE_INT_RGB);
Graphics2D g = image.createGraphics();
// ...drawing code skipped here...
g.dispose();
httpResp.setStatus(HttpServletResponse.SC_OK);
httpResp.setContentType("image/png");
ImageIO.write(image, "png", httpResp.getOutputStream());
}
Это работает хорошо, и теперь я хотел бы добавить еще одну функцию в мой сервлет: загрузка того же изображения по HTTP POST на другой веб-сайт (Я бы инициировал загрузку, вызвав URL-адрес моего сервлета с помощью почасового червяка.
Я понимаю, что должен использовать MultiPartContentProvider и следующий код:
MultiPartContentProvider multiPart = new MultiPartContentProvider();
multiPart.addFilePart("attached_media", "img.png", new PathContentProvider(Paths.get("/tmp/img.png")), null);
multiPart.close();
однако я бы предпочел не сохранять сгенерированное изображение как временный файл.
Вместо этого я хотел бы использовать BytesContentProvider или, возможно, InputStreamContentProvider … но как жениться их с ImageIO.write()
звонить?