【发布时间】:2020-03-01 22:23:11
【问题描述】:
使用 Jetty 9.4.21.v20190926,我运行了一个自定义 servlet(一个 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());
}
这很好用,现在我想向我的 servlet 添加另一个功能:uploading the same image by HTTP POST to another website(我会通过每小时 cronjob 调用我的 servlet 上的 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() 通话?
【问题讨论】:
标签: java servlets jetty javax.imageio jetty-9