如何在Jfree图表的响应标头中设置Content-Length?

时间:2018-12-14 09:34:08

标签: httpresponse jfreechart

我有一个servlet正在创建jfree图表。默认情况下,它以分块形式返回tranfer-encoding。但是我必须在响应头中设置Content-Length。

final JFreeChart chart = ChartController.createChart();

          final int chartWidth = ChartUtils.calculateWidth(request);
          final int chartHeight = ChartHelper.getQuickViewChartHeight();

          final ServletOutputStream out = response.getOutputStream();
          response.setContentType("image/png");       
          ChartUtilities.writeChartAsPNG(out, chart, chartWidth, chartHeight);

1 个答案:

答案 0 :(得分:1)

如建议的here一样,设置内容长度标头 和使用分块传输编码也没有意义。无论哪种情况,如here所述,您都可以使用ChartUtilities.encode()来确定编码图像数组的字节长度:

byte[] b = ChartUtilities.encode(chart.createBufferedImage(chartWidth, chartHeight));
int imageLength = b.length;

稍后,您可以write()将编码后的图像添加到输出流:

out.write(b);
相关问题