我正在AppEngine上编写一个java。这个servlet生成png映像。我想要"gzip“的回应。我是这样做的:
resp.setHeader("Content-Encoding","gzip");
resp.setContentType("image/png");
// ... png generation ...
GZIPOutputStream gzos = new GZIPOutputStream(resp.getOutputStream());
gzos.write(myPNGdata);
gzos.close();但是:在开发服务器中,没关系,png显示得很好,响应也很好。然后我在生产服务器(AppEngine)上测试,我得到的只是一个“坏”的映像.

我的密码有什么问题吗?它与开发/产品开发环境有关吗?
当然,如果我不对输出进行gzip,那么在这两种环境中都可以。
谢谢你的帮助。
编辑:我也试过这样做:
GZIPOutputStream gzos = new GZIPOutputStream(resp.getOutputStream());
gzos.write(ImagesServiceFactory.makeImage(readImage("somePicture.png")).getImageData());
gzos.flush();
gzos.finish();
gzos.close();它也不起作用。
编辑2:实际上,响应是gzip。我用"curl theUrl >tmp.gz“获取servlet,然后将其压缩为"tmp.gz",图像很好。但是没有浏览器能够正确地显示它:(我的gzip有什么问题?
发布于 2010-12-14 23:58:37
appropriate基础设施将在适当的时候为您处理when内容。你不应该自己动手。
发布于 2010-12-14 20:55:37
检查下载图像的大小。如果它较小,那么您预期,很可能您需要在关闭之前冲洗流。
https://stackoverflow.com/questions/4444107
复制相似问题