Właśnie zobaczyłem twoje pytanie i byłem ciekaw tego. Zrobiłem więc własną próbę. Zostawiłem wszystkie rzeczy Servlet związanych z problemu i kodowane coś takiego:
import java.io.*;
import java.util.zip.GZIPOutputStream;
public class GZIPTestcase {
public static void main(String[] args) throws Throwable {
GZIPOutputStream gzipOutputStream = new GZIPOutputStream(new FileOutputStream(new File("/Users/malax/foo2.gz")));
PrintWriter pw = new PrintWriter(gzipOutputStream);
pw.println("All your base are belong to us!");
pw.flush();
pw.close();
}
}
GNU gunzip była w stanie dekompresji danych. Następnie próbuję go rozpakować za pomocą PHP. Nie udało się z tym samym błędem, który otrzymałeś. Badałem dalej i znaleźć następujące metody:
gzinflate nie działa albo, gzdecode jest dostarczany tylko z PHP6 wich havn't zainstalowane. Może mógłbyś spróbować tego. (Zgodnie z http://bugs.php.net/bug.php?id=22123 to zadziała)
Mam wątpliwości, że problem jest po stronie Java, ponieważ GNU może zepsuć dane, więc musi być poprawne. Możesz chcieć zbadać dalej po stronie PHP.
Występuje prawdziwe pytanie do .NET i PHP, gdzie oryginalny plakat ma taki sam problem, jak masz: Can PHP decompress a file compressed with the .NET GZipStream class?. PHP wydaje się nie być w stanie rozpakować danych z .NET odpowiednik GZIPOutputStream albo.
Przepraszam, że nie mam "rozwiązania", ale i tak mogłem wskazać ci właściwy kierunek.
EDIT: znalazłem wpis w PHP Bugtracker która wyjaśnia problem: http://bugs.php.net/bug.php?id=22967 Wydaje się, że nie może gzuncompress rozpakowania danych GZIP z nagłówkami, które zostaną wyprodukowane być GZIPOutputStream. Jak podano w Wpisie na Bugtracker, spróbuj przyciąć nagłówek.
Czy pojawiają się błędy? czy możesz opublikować logi? – rogeriopvl
Upewnij się, że kod JavaScript ustawia nagłówek HTTP 'Content-Encoding: gzip'. – Asaph
Ostrzeżenie: gzuncompress(): błąd danych. Próbowałem po prostu echo danych bez próby rozpakowania go, aby upewnić się, że otrzymuję rzeczywiste dane i otrzymuję blok danych, który rozpoczyna: [ Content Content-Encoding jest ustawiony na gZip na Java Side .. –