我正在构建一个简单的服务器程序,该程序需要在响应中同时返回图像和一些文本,但是,Jetty出现了问题。该文本应包含在HTTP响应的标头中,但不是。
以下是返回图像的代码:
override fun doPost(request: HttpServletRequest, response: HttpServletResponse) {
response.contentType = "image/png"
response.status = HttpServletResponse.SC_OK
val diff = ImgDiff.getDifference("img1", "img2", tolerance)
//response.writer.println(diff.toString())
ImageIO.write(ImageIO.read(File("diffedFile.png")), "PNG", response.outputStream)
response.addHeader("diff", diff.toString())
}
这可以正常工作,但是标题不包含diff。当我用注释掉ImageIO行并取消注释上面的那一行时,已经注释掉的那一行,并将内容类型更改为text/plain
diff包含在标题中。
带有图片的标题:
Date: Mon, 13 May 2019 22:03:35 GMT
Content-Type: image/png
Transfer-Encoding: chunked
Server: Jetty(9.4.18.v20190429)
没有图片的标题(如后一种情况所述)
Date: Mon, 13 May 2019 22:10:32 GMT
Content-Type: text/plain;charset=iso-8859-1
diff: 62.62626262626263
Content-Length: 19
Server: Jetty(9.4.18.v20190429)
我在Jetty上做错什么了吗? HTTP响应图像可以不包含图像吗?我意识到我可以只返回一个包含图像和文本的zip文件,但是我认为这有点多。我是否忽略了HTTP请求的基本要求?请让我知道。
答案 0 :(得分:1)
如果在将图像打印到流中之前添加标题,这似乎是可行的。
addEventFilter