2013-02-13 64 views
7

假設服務器不能壓縮對用戶請求的響應。網絡開發人員仍然創建一個myfile.txt.gz並將其存儲在http://www.mysite.com/myfile.txt.gz如何讓瀏覽器gunzip獲取一個Ajax獲取的gziped文本文件?

瀏覽器可以自動將此壓縮文本文件作爲Ajax請求的一部分進行gunzip並將結果存儲在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頁面被如何發送的方式。您應該先檢查Accept-Encoding標頭。 – 2013-02-13 16:50:30

+0

我在嘗試,但似乎沒有工作。你有一個操作代碼的例子嗎? – JVerstry 2013-02-13 17:52:18

+0

我建議的所有代碼都在服務器端。你使用什麼服務器端語言(如果有的話)(我只知道PHP)?您不必在JavaScript中做任何特殊的事情,只需像通常那樣進行AJAX調用即可。如果瀏覽器支持gzip,並且服務器發送「Content-encoding」標題,它將自動將其解壓縮。 – 2013-02-13 18:01:42

回答

4

讓瀏覽器用Content-Encoding: gzip解壓縮可能是最好的。如果它不適用於你的場景,JavaScript中有很多LZW實現,例如:https://gist.github.com/revolunet/843889

你可能不得不嘗試不同的實現,我沒有自己檢查它們中的任何一個。

+1

我不控制服務器端的內容編碼...我如何從Ajax中檢索二進制內容? – JVerstry 2013-02-13 18:05:34