Я пишу Java-сервлет в AppEngine.Этот сервлет генерирует 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), и все, что я получаю, это «испорченное» изображение ...
Что может быть не так с моим кодом?Это связано со средой dev / prod?
Конечно, если я не распакую вывод, все нормально в обеих средах.
Спасибо за любую помощь.
Редактировать: я тоже пробовал:
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», затем извлек «tmp.gz», и изображение в порядке.Но ни один браузер не может отобразить его правильно :( Что не так с моим gzip?