在图像http响应码头中包含文本标头



我正在构建一个简单的服务器程序,该程序需要在响应中返回图像和一些文本,但是,我对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())
}

这可以正常工作,但是,标头不包含差异。当我使用评论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)

我在码头做错了什么?HTTP响应图像不包含图像吗?我意识到我可以返回包含图像和文本的zip文件,但我认为这有点多。我是否忽略了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.addHeader("diff", diff.toString())
    ImageIO.write(ImageIO.read(File("diffedFile.png")), "PNG", response.outputStream)
}

最新更新