2013-02-13 8 views
7

ユーザー要求に対する応答を圧縮できないサーバーを想定します。ウェブデベロッパーはmyfile.txt.gzを作成し、http://www.mysite.com/myfile.txt.gzに保存します。ブラウザgunzipを使ってAjaxがgzipされたテキストファイルを取得する方法は?

ブラウザにAjaxリクエストの一部としてこの圧縮されたテキストファイルを自動的にガンズして結果をvarに保存することは可能ですか?はいの場合、どうですか?

私は必要に応じて他の圧縮アルゴリズムを公開しています。

更新

私は、次のjQueryのAjax呼び出しを使用しようとしています:

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 + " !"); 
     } 

    }); 

} 

を私は自分のブラウザに以下を得る:

enter image description here

任意のアイデア?

+0

ヘッダーを 'Content-type:text/plain'と' Content-encoding:gzip'に設定すると動作するかもしれません。それはHTMLページがgzipで送られる方法です。おそらく 'Accept-Encoding'ヘッダを最初にチェックするべきです。 –

+0

私は試していますが、うまくいかないようです。運用上のコード例がありますか? – JVerstry

+0

私が提案したすべてのコードはサーバー側にあります。あなたが使用しているサーバーサイドの言語(もしあれば)は何ですか(私はPHPのみ知っています)? JavaScriptの中で特別なことを行う必要はありません。通常のようにAJAX呼び出しを行います。ブラウザがgzipをサポートしていて、サーバが 'Content-encoding'ヘッダを送ると、それは自動的に解凍されます。 –

答えて

4

ブラウザにContent-Encoding: gzipで解凍させるのがおそらく最適です。あなたのシナリオではうまくいかない場合は、多くのLZW実装がjavacriptにあります:https://gist.github.com/revolunet/843889

あなたは別の実装を試してみる必要があります。

+1

私はサーバーサイドでコンテンツエンコーディングを制御しません... Ajaxからバイナリコンテンツを取得するにはどうすればよいですか? – JVerstry

関連する問題