我需要通過OpenLayers.Protocol.HTTP在OpenLayers中加載一個zip文件。我想加載它,並在jszip的幫助下解壓縮它。由於我想加載二進制數據,我必須更改XMLHttpRequest的mimeType。一個jszip例子說,它的工作原理是這樣的:在OpenLayers中通過XMLHttpRequest加載二進制數據
var xhr1 = new XMLHttpRequest();
xhr1.open('GET', '../test/ref/text.zip', true);
if (xhr1.overrideMimeType) {
xhr1.overrideMimeType('text/plain; charset=x-user-defined');
}
xhr1.onreadystatechange = function(e) {
if (this.readyState == 4 && this.status == 200) {
var zip = new JSZip(this.responseText);
var elt = document.getElementById('xhr1_way');
elt.innerHTML = "<p>loaded ! (as a " + (typeof this.responseText) + ")</p>";
elt.innerHTML += "<p>Content = " + zip.file("Hello.txt").asText();
}
};
不幸的是,XMLHttpRequest類的OpenLayers用途(OpenLayers.Request.XMLHttpRequest)沒有overrideMimeType功能。當我嘗試在不設置MIME類型的情況下解壓加載的數據時,出現「到達數據結束(數據長度= 23798955,索引= 24968701)。損壞的zip?」,因此它看起來沒有正確加載zip 。任何建議如何解決這個問題?