如何使用Jetty HTTP客户端和MultiPartContentProvider上传BufferedImage?

问题描述 投票:0回答:1

使用Jetty 9.4.21.v20190926,我运行了一个自定义的servlet(一个WAR文件),它能够生成像这样的图像:

generated image

通过以下代码:

@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()调用结婚

他们?

使用Jetty 9.4.21.v20190926,我运行了一个自定义servlet(一个WAR文件),它能够生成像这样的图像:通过以下代码:@Override protected void doGet(HttpServletRequest httpReq,...

java servlets jetty javax.imageio jetty-9
1个回答
1
投票

您是否曾尝试在OutputStreamContentProvider中使用PathContentProvider而不是multipart.addFilePart()

© www.soinside.com 2019 - 2024. All rights reserved.