2013-02-13 7 views
7

Angenommen, ein Server kann Antworten auf Benutzeranforderungen nicht komprimieren. Ein Webentwickler erstellt dennoch eine myfile.txt.gz und speichert sie unter http://www.mysite.com/myfile.txt.gz.Wie ein Browser Gunzip eine Ajax holte Gziped Textdatei?

Es ist möglich, dass der Browser diese komprimierte Textdatei automatisch als Teil der Ajax-Anfrage öffnet und das Ergebnis in einer var speichert? Wenn ja, wie?

Ich bin offen für andere Kompressionsalgorithmen, wenn nötig.

aktualisiert

Ich versuche, den folgenden JQuery Ajax-Aufruf zu verwenden:

var fetch = function() { 

    $.ajax({ 
     type: 'GET', 
     url: "./data.txt.gz", 
     headers: { "Accept-Encoding" : "gzip" }, 
     dataType: "text", 
     async: true, 
     success: function(result) { 
      $("#midEnglob").text(result); 
     }, 
     error: function(jqXHR, textStatus, errorThrown) { 
      alert("Issue: " 
       + textStatus + " " 
       + errorThrown + " !"); 
     } 

    }); 

} 

aber ich habe folgend in meinem Browser: Irgendwelche Ideen

enter image description here

?

+0

Ich bin mir nicht sicher, aber wenn Sie die Header auf 'Content-type: text/plain' und' Content-encoding: gzip' setzen, könnte es funktionieren. So werden HTML-Seiten mit einem ZIP-Code versendet. Sie sollten wahrscheinlich zuerst den 'Accept-Encoding'-Header überprüfen. –

+0

Ich versuche es, aber es scheint nicht zu funktionieren. Haben Sie ein Beispiel für einen Betriebscode? – JVerstry

+0

Der gesamte Code, den ich vorgeschlagen habe, wäre auf der Serverseite. Welche serverseitige Sprache (falls überhaupt) benutzt du (ich kenne nur PHP)? Sie sollten nichts spezielles in JavaScript tun müssen, machen Sie einfach einen AJAX-Anruf, wie Sie es normalerweise tun würden. Wenn der Browser gzip unterstützt und der Server den Header "Content-encoding" sendet, wird er automatisch entpackt. –

Antwort

4

Lassen Sie den Browser es mit Content-Encoding: gzip dekomprimieren ist wahrscheinlich das Beste. Wenn es nicht für Ihr Szenario funktioniert, gibt es viele LZW-Implementierungen in Javascript wie: https://gist.github.com/revolunet/843889

Sie müssen möglicherweise verschiedene Implementierungen ausprobieren, ich habe keine von ihnen selbst überprüft.

+1

Ich kontrolliere nicht die Inhaltscodierung auf der Serverseite ... Wie kann ich den binären Inhalt vom Ajax abrufen? – JVerstry